我試圖在模板類中定義模板成員。「期望初始值設定項」<'token「嘗試模板成員專業化
這裏是頭文件的片段:
template <typename Type>
class Queue
{
private:
// class scope definitions
// Node is a nested structure definition local to this class
struct Node {Type item; struct Node* next;};
enum {Q_SIZE = 10};
template <typename Type2> class DeepCopy // template member
{
public:
void docopy(Type2& d, const Type2& s);
};
...
所以模板成員的定義,但我想要的docopy方法,因此深拷貝當類型爲指針的明確分工。我把另一個片段從頭文件與方法模板和專業化:
// template member
template <typename Type>
template <typename Type2>
void Queue<Type>::DeepCopy<Type2>::docopy(Type2& d, const Type2& s)
{
d = s;
}
// template member specialization for pointers
template <typename Type>
template <typename Type2>
void Queue<Type*>::DeepCopy<Type2*>::docopy(Type2* d, const Type2* s)
{
if (s)
d = new (*s);
else
d = 0;
}
編譯器把我下面的錯誤:之前「<」令牌預期初始化。
我搞不清楚我做錯了什麼。任何幫助?
我不認爲這可以這樣工作。你需要完全專門化指針類型的類。你最後一個定義的問題是'隊列'是一個不完整的類型。 –
jrok
@jrok是的,它似乎從一開始就有缺陷。感謝澄清。 – Kurospidey