2011-02-02 120 views
0

我有一个IBase类与virtual void CastData(){}在其中。它在另一个功能中被使用。C++继承 - 为什么我的函数没有被使用?

我有另一个风马牛不相及类IC

virtual void CastData(){ 
    for (FunctionIterator it(funcs.begin()); it != funcs.end(); ++it){ 
     DataType dataCopy; 
     dataCopy = *dataElement; 
     (*it)(dataCopy); 
    } 
} 

现在我想创建一个新的类,其中CastData由C从基类overrite CastData。

所以我尝试像 类IGraphElement:公共IBASE,公共IC

从正确运行的所有功能。并且所有IC功能都运行但IBase CastData未被覆盖。

当你从继承的另一个类继承overrite虚函数的类的虚函数时,如何做这种类型的overrites?

+1

请问为什么你不能更好地命名你的功能? – 2011-02-02 02:51:04

回答

1

虚拟函数必须由派生类重写,而不是其他基类。也许在IGraphElement中提供一个覆盖IC的工作。

1

如果您想要覆盖所有CastData,那么您可能需要抽象接口并使IC和IBase从同一接口派生。但正如你所指出的,IBase和IC完全无关的类,那么你不应该指望IGraphElement可以优雅地在IBase和IC中覆盖CastData。

相关问题