2013-10-08 3 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;

Смежные вопросы