1

假设我有一个名为 A 的类

template<class T>
class A
{
protected:
    static T* obj;

    A() {}
    ~A() {}

public:
    // methods...
};


// Somewhere in my source file...
template <class T> A <T*> ::obj = NULL;

由于各种原因,我需要声明一个静态成员 obj 并且 gcc 不喜欢它们在类的定义期间被初始化(显然你可以使用 Visual Studio 来做到这一点)

无论如何,我如何正确声明 obj?

4

1 回答 1

2

您不能像这样部分专门化对象。相反,只需这样做:

template <class T> T * A<T>::obj = NULL;

确保这与类模板定义一起进入头文件!

于 2013-02-21T00:23:28.940 回答