模板指针初始化

Dou*_*uid 0 c++

我有一个模板类

template <class T>
class MyTemplate
{
public:
    struct node
    {
        int a;
    };
    MyClass();
    ~MyClass();
private:
    static node* theNode;
};

template <class T>
MyClass::node* MyClass<T>::theNode = 0;
Run Code Online (Sandbox Code Playgroud)

但初始化theNode失败 - 使用类模板需要模板参数列表如果我将声明更改为

MyClass<T>node* MyClass<T>::theNode = 0;
Run Code Online (Sandbox Code Playgroud)

我明白了

错误C2143:语法错误:缺少';' 在'*'之前

请有人能告诉我正确的语法是什么吗?

MRB*_*MRB 6

只需更改您的定义:

template<class T>
typename MyClass<T>::node* MyClass<T>::theNode = 0;
Run Code Online (Sandbox Code Playgroud)

  • 真是太遗憾了.贬低可怕的答案并没有错.这就是机制的用途.(我对此赞不绝口.) (2认同)