请找到以下代码:
#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"
答案 0 :(得分:2)
A
是一个类模板,因此在定义指向它的指针时需要指定模板参数。
而不是:
template<typename T>
A* A<T>::self = NULL;
它应该是:
template<typename T>
A<T>* A<T>::self = NULL;
在类体中,指定模板参数是可选的,因此您可以在那里写A*
,它将被视为与A<T> *
相同。
答案 1 :(得分:0)
尝试:
template<typename T>
A<T>* A<T>::self = NULL;