考虑这样一个类:
template < class T >
class MyClass
{
private:
static T staticObject;
static T * staticPointerObject;
};
...
template < class T >
T MyClass<T>::staticObject; // <-- works
...
template < class T >
T * MyClass<T>::staticPointerObject = NULL; // <-- cannot find symbol staticPointerObject.
我无法弄清楚为什么我无法成功创建该指针对象。
上面的代码都是在header中指定的,我提到的问题是链接步骤出错,所以没有找到特定的符号。
最佳答案
“找不到符号 staticPointerObject” - 这看起来像链接器错误消息。是吗? (必须在您的问题中指定此类详细信息)。
如果是,则很可能会发生这种情况,因为您将静态成员的定义放入实现文件(.cpp 文件)中。为了使其正常工作,定义应放入头文件(.h 文件)中。
同样,必须在您的问题中指定此类详细信息。没有他们,它就会变成一场随机的猜测盛宴。
关于c++ - 在模板类中初始化静态指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3408469/