我在基類中定義爲純虛函數 虛擬int GetData() const = 0
;虛擬函數返回類型
在每個派生類中,我定義一個枚舉並嘗試重寫GetData函數返回 (派生類特定枚舉)值;
例如:
class Derived1 : public Base
{
public :
enum D1
{
d1_1 = 0,
d1_2 = 60,
...
d1_100
};
D1 GetData() const;
};
class Derived2 : public Base
{
public :
enum D2
{
d2_1 = 10,
d2_2 = 39,
...
d2_300
};
D2 GetData() const;
};
地說,我不能老是Ðefine相同範圍從所有類的所有枚舉valuyes這是非常重要的。上述 的代碼生成編譯錯誤:
error C2555: : overriding virtual function return type differs and is not covariant
任何建議 - 如何解決?
更改返回類型爲'int'無處不在? – 2013-04-07 19:01:45
這不是很好,因爲它對保留和使用枚舉的其他功能很重要 – Yakov 2013-04-07 19:04:50
這個小缺點是它沒有意義,儘管:-( – 2013-04-07 19:05:27