简单地说,我需要按照标题说的做:从父级调用子级静态方法。问题是我不知道父类中的子类名称,因为可能有多个子类。静态方法需要保持静态。例如:
class A{ // parent class
public:
void process(){
getData(); // <-- Problem
}
}
class B: public A{ // child class
static int getData();
}
void main(){
B b;
b.process();
}
想到的一种解决方案是拥有一个调用静态方法的虚拟方法。这不是很好,这意味着我必须为我拥有的每个孩子实施该方法:
class A{ // parent class
virtual int getDataFromStaticMethod() = 0;
public:
void process(){
getData(); // <-- Problem
}
}
class B: public A{ // child class
static int getData();
virtual int getDataFromStaticMethod(){
return B::getData();
}
}
void main(){
B b;
b.process();
}
但我真的希望可以用静态方法实现纯虚方法:
class A{ // parent class
virtual int getData() = 0;
public:
void process(){
getData(); // <-- Problem
}
}
class B: public A{ // child class
static int getData();
}
void main(){
B b;
b.process();
}
有什么建议么?
谢谢!