У меня есть класс B, который публично наследуется от A:
class A {
private:
virtual void method();
}
class B : public A {
private:
void method();
}
Теперь мне нужно как-то вызвать исходный A::method()
в B::method()
, не вызывая конструктор копирования для A.
A определен в библиотеке, которую я пытаюсь расширить, поэтому я не могу изменить этот код (сделать метод защищенным для пример). Можно ли каким-то образом преобразовать this
ptr в B::method()
и вырезать переопределенный method
?
Я использую внешний интерфейс, который вызывает A::method()
. Этот интерфейс правильно вызывает мой переопределенный B::method()
, но я не могу заставить вызов интерфейса в B::method()
не генерировать переполнение стека.
virtual
protected
inline
, которая вызывает функцию с подходящим квалификатором ... 17.12.2014A
определяется иначе при компиляции измененного заголовка, чем при его компиляции для библиотеки. Я сейчас слишком ленив, чтобы найти главы и стихи. 17.12.2014