call child static function from parent?
假设我们有以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 | class Parent { public: virtual void run() { for (int i = 0 ; i < bar.size() ; ++it) cout << i <<" " ; }; protected: static vector<int> foo() {return vector r({1,2,3,4,5});}; static vector<int> bar; } vector<int> Parent::bar = Parent::foo(); |
现在,如果我创建一个运行函数将在外部调用的子类,那么在仍然使用父运行函数的情况下,如何重新定义foo函数以返回其他内容?
编辑:抱歉,让我添加更多信息。假设虚函数run()是大量的代码,它们本质上是相同的。父类和子类的唯一区别是我希望在向量栏中指定的值,因此重新定义子类中的虚拟函数似乎有点浪费。但是,如果重新定义child::bar并调用child::run(),则会使用parent::bar,因为它是在父类中定义的。在子类中,是否可以使用"vector parent::bar=parent::foo();"行"know"来使用"child::foo();"?
型
像往常一样。重写派生类中的基虚函数。
1 2 3 4 5 6 7 8 9 10 11 12 | class Parent { public: virtual bool run() {return bar;}; static bool foo() {return true;}; static bool bar; }; class Child: public Parent { public: static bool foo() { return false;}; }; |
号
然后,您仍然可以使用应用
1 2 3 4 5 6 7 8 | int main() { bool bc = Child::foo(); bool bp = Parent::foo(); std::cout << bc << bp; return 0; } |
http://ideone.com/tdanq5
型
你对你的问题真的不怎么说,因此很难区分你需要什么和潜在的xy问题。
您的体系结构的一个潜在问题是,您有一个
那么,当同时使用
型
我不知道你到底想要什么。但是,您可以像这样重写静态函数,
1 2 3 4 5 | class Child: public Parent { public: static bool foo() {return false;}; }; |