假设我们有以下几点:从父级调用子静态函数?
class Parent {
public:
virtual void run() {
for (int i = 0 ; i < bar.size() ; ++it)
cout << i << "\n" ;
};
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();”在Child类中知道使用“Child :: foo();”?
我无法弄清楚你在问什么。你的意思是你想'Child :: foo()'返回'false'? –
用更多的信息编辑了这个问题,希望它能帮到 – user2635787
你能解释为什么'bar'需要是静态的吗?子类化覆盖静态值似乎有点奇怪。 – user1735003