这个模板定义有什么问题?

Mar*_*tin 6 c++ templates

template <int N>
class myarray {
    typedef int Bitmap;
public:
    static Bitmap data[N];
};

template <int N> myarray<N>::Bitmap myarray<N>::data[N];
Run Code Online (Sandbox Code Playgroud)

错误:'myarray'之前的预期构造函数,析构函数或类型转换

Set*_*gie 9

您需要typename之前myarray<N>::Bitmap因为它是一个依赖类型:

template <int N>
class myarray {
    typedef int Bitmap;
public:
    static Bitmap data[N];
};

   template <int N>
   typename myarray<N>::Bitmap myarray<N>::data[N];
// ^^^^^^^^
Run Code Online (Sandbox Code Playgroud)