在完全专用的类模板中初始化静态成员

时间:2011-03-13 12:44:10

标签: c++ templates

我似乎无法在完全专用的类模板中初始化静态成员!

我正在尝试执行以下操作:

template<typename Type>
class X
{
};

template<>
class X<int>
{                                       
    public:

    static int Value;   
}

但是我似乎无法初始化静态成员,我尝试了以下所有内容:

template<>
int X<int>::Value = 0;

它没有编译,所以任何关于如何实际执行此操作的指针都会很好;)

编辑:下面的答案是正确的,但您还需要将init放在.cpp文件中,而不是放在头文件中。

谢谢你的时间, 理查德。

1 个答案:

答案 0 :(得分:6)

定义template<>时不要使用Value,因为在本例中明确专门化的类[template<>的成员定义中不允许X<int>。此外,您在}

之后缺少分号

works for me

template<typename Type>
class X
{
};

template<>
class X<int>
{                                       
    public:

    static int Value;   
};

int X<int>::Value = 0;