我有一个使用多态的奇怪问题.我有一个实现静态方法的基类.由于各种原因,此方法必须是静态的.基类还有一个纯虚方法run(),由所有扩展类实现.我需要能够run()从静态类调用.
当然,问题是静态类没有this指针.此方法可以在void*参数中传递.我一直试图想出一种聪明的方法将run方法传递给它,但到目前为止还没有任何工作.我也试过把它传递给它.这个问题是我必须实例化它,这需要知道扩展类.这破坏了多态性的整个目的.
关于如何解决这个问题的任何想法?
假设我有一个父类:
Class Parent{
public:
virtual void doSomething(){}
}
Run Code Online (Sandbox Code Playgroud)
和两个孩子:
Class Son: public Parent{
public:
void doSomething(){
// Do one thing
}
}
Class Daughter: public Parent{
public:
void doSomething(){
// Do another thing
}
}
Run Code Online (Sandbox Code Playgroud)
如果我像这样设置一个子类的实例:
Parent obj = Son();
Run Code Online (Sandbox Code Playgroud)
如何正确调用doSomething()由Son而不是空函数定义的方法Parent