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"
4

2 回答 2

2

A是类模板,所以在定义指向它的指针时需要指定模板参数。

代替:

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

它应该是:

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

在类体内,指定模板参数是可选的,所以你可以写A*在那里,它会被视为A<T> *.

于 2013-10-08T16:48:27.807 回答
0

尝试:

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

于 2013-10-08T16:49:17.173 回答