c++ - 在模板类中初始化静态指针

标签 c++ templates static-members

考虑这样一个类:

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/

相关文章:

java - 是否需要构造函数来初始化静态变量?

c++ - 在 C++ 中清理代码以 printf size_t(或 : Nearest equivalent of C99's %z in C++)

c++ - 将数字从 base-10 转换为另一个 base

c++ - 通过推导实现一个map_keys_iterator : a single compiler error

C++静态函数指针数组的初始化

c++ - 面向对象编程,使用静态函数统计对象

c++ - 为什么 g++ 和 clang++ 之间的编译时间差异很大?

c++ - 如何使用插槽实时更新 paint()

c++ - 在可变参数模板中实现 STL 函数

c++ - 选择模板化运算符实现