2013-05-04 111 views
0

如何在其他模板類中使用模板類的變量?在編譯時,我收到錯誤clsC is not a template - 爲什麼?在另一個模板類中使用模板類類型的變量

---- MyClasses.h: ---- 

template <typename T> class clsA { 
public: 
    void Foo(typename clsC<T> arg) {...} 
    ... 
}; 

template <typename T> class clsB { 
public: 
    std::vector<clsA<T>> a; 
    ... 
}; 

template <typename T> class clsC { 
public: 
    clsC(typename clsB<T> arg) {...} 
    ... 
}; 

有很多類似的問題,但沒有一個解決了我的問題到目前爲止。

+1

正向聲明... – Pubby 2013-05-04 02:45:44

+0

啊我不知道你可以轉發聲明類(我來自純C) - 謝謝 – mchen 2013-05-04 02:56:12

回答

3

您可能必須添加clsC前向聲明。

template<class T> class clsC; 

把這條線放在clsA的定義之前。

此外,以下行

std::vector<clsA<T>> a; 

應改寫爲

std::vector< clsA<T> > a; 
因爲編譯器的

誤解符號 「>>」。

相關問題