Статическая инициализация члена класса шаблона

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"
Теги:
templates

2 ответа

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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню