Да, это возможно , но вам нужно использовать грязные приемы приведения или полагаться на полуопределенное поведение, но для уверенности вы можете вызывать экспортированную функцию, независимо от того, является ли она частным / публичным статусом.
Язык не обеспечивает защиту от злоумышленников. Это поможет всем играть по правилам, но не защитит тех, кто пытается взломать систему.
Например:
- используйте
GetProcAddress()
для получения адреса функции, приведите его к нужному типу функции-члена и вызовите его.
- создайте модифицированный заголовочный файл класса, объявив все как public (или просто добавьте статическую функцию,
void crowbar()
), скомпилируйте его. (Неопределенное поведение, поскольку вы нарушаете Правило единого определения, но оно, вероятно, будет работать ...)
Не полагайтесь на частное ключевое слово C ++ для обеспечения безопасности.