Добрый день.
Есть иерархия классов от которой наследуется пользователь
https://godbolt.org/z/nTdPcdEM4
#include <iostream>
struct A {
void virtual f() = 0;
};
struct B : A {
void f() override {
std::cout << "B::f()\n";
}
};
struct C : B {
void f() override {
B::f();
std::cout << "C::f()\n";
}
};
struct User1 : C {
void f() override {
//C::f();
std::cout << "User1::f()\n";
}
};
struct User2 : User1 {
void f() override {
//User1::f();
std::cout << "User2::f()\n";
}
};
int main()
{
User2 u2;
A* obj = &u2;
obj->f();
return 0;
}
Если пользователь переопределяет виртуальную функцию он должен вызвать эту же функцию из базового класса.
Можно ли сделать это автоматически или хотя бы выдать ошибку если пользователь забыл вызвать эту функцию из базы.
В классы A,B,C можно добавлять любой код.