2011-02-02 122 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。

相關問題