Это работает так, как вы хотите. Если ваш реальный код не работает, значит, вы не показали нам все необходимое. Вот почему мы умоляем вас показать нам реальный код. Как вы думаете, вы единственный здесь, кто имеет дело с большой кодовой базой, которой нельзя поделиться в Интернете? Как вы думаете, как остальные из нас получают помощь? Напишите небольшой пример, который фактически повторяет поведение, которое вы видите, и опубликуйте его. Не публикуйте псевдокод, который вы даже не скомпилировали.
Вот как вы можете делать то, что вы пытаетесь сделать, а также пример того, как вы должны публиковать сообщения.
#include <iostream>
using namespace std;
class Base
{
public:
virtual void Accepted()
{
cout << "Base::Accepted" << endl;
}
void Listener()
{
cout << "Base::Listener" << endl;
Accepted();
}
};
class Der : public Base
{
public:
void Accepted()
{
cout << "Derived::Accepted" << endl;
}
};
int main()
{
cout << "*** BASE ***" << endl;
Base b;
b.Listener();
cout << "\n*** DERIVED ***" << endl;
Der d;
d.Listener();
}
Вывод:
*** BASE ***
Base::Listener
Base::Accepted
*** DERIVED ***
Base::Listener
Derived::Accepted