c++ calling static function from virtual function
我有调用适当类的静态方法的虚拟方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class A{ public: static void bar() {std::cout<<"bar A ";} virtual void foo(){ //Some A work... bar(); } }; class B : public A{ public: static void bar() {std::cout<<"bar B ";} virtual void foo() override { //Some B work... bar(); //prints bar B, as intended. } }; |
但现在我想用方法foo()获得类C,最后调用c::bar()的唯一区别是:
1 2 3 4 5 6 7 8 9 | class C : public A { public: static void bar() override {std::cout<<"bar C ";} virtual void foo(){ //Some **A** work... bar(); //I want to print"bar C" here } } |
但是,这里我需要对方法A::foo定义进行完整复制。我还可以引入类似"virtual void callstaticbar()bar();"的虚拟方法,并在类C中用相同的文本重写它。有没有更优雅的方式来做这样的事情?
型
不,如果没有定义
您需要使用虚拟方法,或者告诉我们更多关于您想要实现什么的信息,因为它们在特定情况下可能是更好的解决方案。