我有调用适当类的静态方法的虚拟方法:
class A{
public:
static void bar() {std::cout<<"bar A\n";}
virtual void foo(){
//Some A work...
bar();
}
};
class B : public A{
public:
static void bar() {std::cout<<"bar B\n";}
virtual void foo() override {
//Some B work...
bar(); //prints bar B, as intended.
}
};
但是现在我想要使用方法 foo()的 C 类,唯一的区别是最后调用 C::bar():
class C : public A {
public:
static void bar() override {std::cout<<"bar C\n";}
virtual void foo(){
//Some **A** work...
bar(); //I want to print "bar C" here
}
}
但是,在这里我需要制作方法 A::foo 定义的完整副本。我还可以引入像 `virtual void callStaticBar(){bar();} 这样的虚拟虚拟方法,并在 C 类中用相同的文本覆盖它。有没有更优雅的方法来做这样的事情?