У меня есть класс, в котором некоторые методы вызывают другие методы, как в следующем примере:
class Base {
public:
virtual void foo() {
cout << "base::foo" << endl;
bar();
}
virtual void bar() {
cout << "base::bar" << endl;
}
};
Затем я хочу создать класс-оболочку, в котором каждый метод вызывает метод базового класса и некоторые дополнительные вещи. что я использую для некоторых тестов.
class Derived :public Base {
public:
void foo() override {
cout << "derived::foo" << endl;
Base::foo();
}
void bar() override {
cout << "derived::bar" << endl;
Base::bar();
}
};
Моя программа вызывала функции из базового класса, и я изменил ее на вызов из класса Derived.
int main() {
//Base A;
Derived A;
A.foo();
return 0;
}
В приведенном выше примере, когда я вызываю Derived :: foo ( ), он вызывает Base :: foo (), что в свою очередь вызывает bar (); Из-за полиморфизма, когда bar () вызывается из Base :: foo (), он разрешается в Derived :: bar (). Я хотел бы, чтобы Base :: foo () вызывал Base :: bar () и только вызовы из Derived для вызова базовых методов. Возможно ли достичь этого без изменения базового класса?