错误:在'A <t *> :: obj'之前需要'typename',因为'A <t *>'是一个依赖范围</t *> </t *>

时间:2013-02-21 00:19:59

标签: c++ gcc

假设我有一个名为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?

1 个答案:

答案 0 :(得分:2)

你不能部分专门化那样的对象。相反,只需这样做:

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

确保将此文件与类模板定义一起放在标题文件中!