2013-07-27 39 views
0

我有以下代碼:初始化靜態成員造成`缺少類型說明符 - 詮釋assumed.`

#include <iostream> 
using namespace std; 

template <class T> class kickingMyself { 
public: 
    static int a; 
}; 

template <class T> kickingMyself<T>::a = 0; 

int main() { 
    kickingMyself<int>::a = 4; 
    cout << kickingMyself<int>::a << endl; 
    cin.get(); 
    return 0; 
} 

就行了:

template <class T> kickingMyself<T>::a = 0; 

即時得到以下錯誤:

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 

我不知道爲什麼我得到這個錯誤。請幫忙。

+0

錯誤消息實際上說的正是** **的錯誤是什麼和如何解決它。 –

回答

1

你沒有指定類型,它應該是int

template <class T> 
int kickingMyself<T>::a = 0; 
+0

謝謝!我是否必須爲每個類或模板類指定類型? – Billie

+1

@ user1798362喲不指定類的類型(這是沒有意義的) - 你指定*變量*的類型。變量定義的語法* always *需要類型。 –

+1

如果課堂是模板化的,這並沒有什麼不同。在定義方法或聲明靜態類成員時指定類型。 – 0x499602D2