c++ - 如何使用内部类类型初始化模板类中的静态字段

标签 c++ templates static-initialization

我有这样的东西

template <class T>
class Outer {
    public: class Inner;

    static Inner* x;

    //...

    class Inner {
        //...
    };
};

// Not working
template <class T>
Outer<T>::Inner* Outer<T>::x = NULL;

我得到的错误是::16: error: expected constructor, destructor, or type conversion before ‘*’ token

最佳答案

template<class T>
class Outer {
public: 

    class Inner;

    static Inner* x;

    //...

    class Inner {
        //...
    };
};

template<class T>
typename Outer<T>::Inner *Outer<T>::x = NULL;
  1. 关于typenameclass,请引用C++ difference of keywords 'typename' and 'class' in templates

  2. 这是为什么,请引用Trouble with dependent types in templates

关于c++ - 如何使用内部类类型初始化模板类中的静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846114/

相关文章:

c++ - for循环openmp中的局部变量

c++ - 使用 gcc 在 c 中创建静态库时出现 "file not found "错误 - linux

c++ - 带有模板模板参数的 CRTP

c++ - 在模板类中使用嵌套的嵌套类时,“依赖名称不是类型”

java - 当通过派生类引用调用基类的静态方法时,哪些类会被初始化?

c++ - 单链表插入和删除的时间复杂度

javascript - AngularJS $scope 在模板中无法访问

c++ - 执行静态对象的析构函数时崩溃

c++ - 工厂类实现问题

C++:取消引用 vector<vector<class_ptr*>>