在头文件 .hpp 中:
class Base{
public:
static /*Some Return Type*/ func(/*Some Datatype*/);
}
class Derived1 public Base{
public:
Derived1();
~Derived1();
}
class Derived1 public Base{
public:
Derived2();
~Derived2();
}
在 cpp 文件 .cpp 中:
/*Some Return Type*/ Derived1::func(/*Some Datatype*/){
}
/*Some Return Type*/ Derived2::func(/*Some Datatype*/){
}
这显然失败了,因为没有办法覆盖子类中的静态方法。但是如何获得上述功能呢?
我必须这样称呼:
/*Some Return Type*/ result = Derived1::func(/*Some Datatype*/)
/*Some Return Type*/ result = Derived2::func(/*Some Datatype*/)
我知道,可以像下面这样在基类中定义抽象方法,然后在派生类中定义它们:
在头文件 .hpp 中:
class Base{
public:
virtual /*Some Return Type*/ func(/*Some Datatype*/) const = 0;
}
但问题是虚拟方法需要对象实例化,这不是我想要的。我想在不创建对象的情况下调用该方法。如果允许使用虚拟静态方法,它们就可以达到目的。
我能想到的唯一替代方法是func()
在头文件的所有派生类中声明该函数,并将其从基类中删除。有没有其他方法可以做到这一点?这样声明在基类中只有一次,所有派生类只需要定义它们,而不是重新声明?