Вы найдете следующий код:
#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"
A
- это шаблон класса, поэтому вам нужно указать параметр шаблона при указании на него указателя.
Вместо:
template<typename T>
A* A<T>::self = NULL;
должен быть:
template<typename T>
A<T>* A<T>::self = NULL;
Внутри тела класса указание параметра шаблона является необязательным, поэтому вы можете написать A*
там, и он будет обрабатываться так же, как A<T> *
.
пытаться:
template<typename T> A<T>* A<T>::self = NULL;