0
struct IA
{
virtual void Init() = 0;
.....
};
struct A : public IA
{
void Init() {};
.....
};
struct B : public A
{
int Init() { return 1; };
};
有了這樣的設計,我得到錯誤C2555:「B ::初始化」:重寫虛函數返回類型...隱瞞在派生類接口基類的特定功能
我能以某種方式掩蓋初始化()來自A,我不想隱瞞其他A的功能。 A級不僅通過B級而從其他地方用作A級。
編輯:我需要在層次結構中有兩個初始函數,只有返回類型不同。 我不需要A :: Init來調用B類型的對象。 其實我可以通過
struct B : private A
{
using A::.... // all, except Init
int Init() { return 1; };
};
做,但在一:(
你不完全清楚你想完成什麼。 – Brian
也許你的'Init'函數不應該是虛擬的。 – Brian
@布賴恩比,你可以把它作爲答案,並將它。但是,現在它對我來說很有趣,至於樂趣。所以,任何其他答案表示讚賞。 – Yola