這部分與this SO question有關。如何處理相互依賴且具有模板成員的類?
我有兩個班,他們兩個都是模板,例如:
class Base
{
public:
template< class T > void operator=(T other)
{
//irrelevant
}
Derived toDerived()
{
Derived d;
//do stuff;
return d;
}
};
class Derived: public Base
{
public:
template< class T > void foo(T other)
{
//do stuff
}
};
正如你所看到的,兩者都模板和Base
類函數內我需要創建的Derived
一個實例。當然,現在我得到一個錯誤Derived does not name a type
。不幸的是,我不能僅僅提前宣佈Derived
,因爲它會導致另一個錯誤variable 'Derived d ' has initializer but incomplete type
。
從上面提到的SO問題我明白,編譯器需要知道所有模板參數能夠正確地轉發聲明它。但顯而易見,我不能僅僅移動Derived
聲明,因爲它會導致完全相同的問題,反之亦然。
有沒有辦法做到這一點?
這與模板有什麼關係嗎? – juanchopanza
我認爲它是'Derived'應該有'fromBase'。 – GManNickG
a。你在類定義之後缺少';'。灣我同意GManNickG--你做的不是很好的OOP。 – elyashiv