2017-01-19 238 views
0

我有一個模板類模板指針初始化

template <class T> 
class MyTemplate 
{ 
public: 
    struct node 
    { 
     int a; 
    }; 
    MyClass(); 
    ~MyClass(); 
private: 
    static node* theNode; 
}; 

template <class T> 
MyClass::node* MyClass<T>::theNode = 0; 

但是,theNode初始化失敗 - 使用類模板需要模板參數列表 如果我改變聲明

MyClass<T>node* MyClass<T>::theNode = 0; 

我得到

錯誤C2143:語法錯誤:缺少';'之前'*'

請有人告訴我什麼是正確的語法是什麼?

+4

是'MyTemplate'應該說'MyClass'? –

+1

錯別字無處不在...修復它然後做使用:'typename MyTemplate ::節點* MyTemplate :: theNode = 0;' – P0W

回答

6

只要改變你的定義:

template<class T> 
typename MyClass<T>::node* MyClass<T>::theNode = 0; 
+0

我的答案是不合時代的? – Bathsheba

+0

@Bathsheba但我不是下來的選民 – MRB

+2

這是一個恥辱。降低可怕的答案沒有任何問題。這就是機制。 (我已經提出了這個。) – Bathsheba