2009-07-15 1 views
0

У меня есть двоичный код, который всегда существовал. Он имеет класс C, который он всегда существовал. Мы должны ввести новый метод M в класс C, но мы хотим, чтобы некоторые пользователи знали о существовании такого метода. М.Удаление скомпилированного метода из файла .h и его последствий

Извлекая из .h-файла такой метод, какую проблему мы можем ввести? Будет ли такой подход обратно совместимым?

EDIT: На самом деле нам все равно, есть ли способ найти метод. Мы просто хотим убедиться, что только люди, знающие, что они делают, используют его.

ответ

6

Более безопасный метод состоит в том, чтобы просто сделать производный класс и дать его .h только определенным людям.

7

С большинством компиляторов C++: если метод виртуальный, у вас будут серьезные проблемы (vtable будет испорчен); если метод НЕ виртуальный, вы не должны быть (но какой-то умный пользователь выведет существование того, что вы пытаетесь скрыть посредством «безопасности через безвестность», и найти способы использовать метод, который вы предпочитаете скрывать от него - - но это еще одна история ;-).

+1

Обратите внимание, что нет гарантии, что класс все равно будет работать. Но да, обычно вы, вероятно, избегаете этого, пока функция не является виртуальной. – jalf

+1

Абсолютно никакой гарантии, как я уже сказал («не следует» подразумевает, что это маловероятно, но не невозможно). Я помню компилятор IBM «direct to SOM» C++, который устанавливал личные/защищенные/общедоступные вещи почти гарантированным образом, если вы пытались ЛЮБОЙ hanky-pakny! -). –

 Смежные вопросы

  • Нет связанных вопросов^_^