我的IBase
课程中包含virtual void CastData(){}
。在那里它用于另一个功能。
我有另一个完全无关的班级IC
和
virtual void CastData(){
for (FunctionIterator it(funcs.begin()); it != funcs.end(); ++it){
DataType dataCopy;
dataCopy = *dataElement;
(*it)(dataCopy);
}
}
现在我想创建一个新类,其中来自C的CastData将从基类覆盖CastData。
所以我尝试了类似的东西 IGraphElement类:公共IBase,公共IC
所有功能都可正常运行。并且所有IC功能都在运行,但IBase CastData没有被覆盖。
当你继承的类中的虚函数从你继承的另一个类中覆盖虚函数时,如何做这种类型的overrites?
答案 0 :(得分:1)
虚函数必须由派生类重写,而不是另一个基类。也许在IGraphElement中提供一个覆盖,调用IC来完成工作。
答案 1 :(得分:1)
如果要覆盖所有的CastData,则可能需要抽象接口并使IC和IBase从同一接口派生。但是正如你所指出的,IBase和IC完全不相关的类,那么你不应该期望IGraphElement可以优雅地覆盖IBase和IC中的CastData。