考虑一个这样的类:

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文件)中。

同样,必须在您的问题中指定类似的详细信息。没有它们,它将变成一个随机的猜测节。

10-08 17:32