2013-10-08 76 views
0

請找到下面的代碼:類模板的靜態成員初始化

#include <iostream> 
using namespace std; 
template<typename T> 
class A 
{ 
    static A* self; 
}; 

template<typename T> 
A* A<T>::self = NULL; 
int main() 
{ 
    return 0; 
} 

我面臨的一個編譯問題,同時初始化靜態指針。儘管如此多的鏈接以同樣的方式表達(我初始化的方式),但問題仍然存在。以下是編譯錯誤。

"expected constructor, destructor, or type conversion before '*' token" 

回答

2

A是一個類模板,所以你需要指定模板參數定義指向它的時候。

相反的:

template<typename T> 
A* A<T>::self = NULL; 

它應該是:

template<typename T> 
A<T>* A<T>::self = NULL; 

在類體,指定模板參數是可選的,所以你可以寫A*存在,並且將被視爲相同爲A<T> *

0

嘗試:

template<typename T> A<T>* A<T>::self = NULL;

相關問題