std :: array instantiation错误

lea*_*vst 18 c++ arrays containers c++11

这里有一个简单的问题.我试图使用std::array并在第一个障碍中绊倒错误...

implicit instantiation of undefined template 'std::__1::array<char,10>'
Run Code Online (Sandbox Code Playgroud)

给出错误的代码如下所示.我现在可以解决它std::map,但我确定修复必须简单!

enum  p_t   {
    EMPTY = 0
    ,BORDER_L
    // ...
    ,BORDER_BR
    ,DATUM
    ,NUMEL    };

class PlotChars
{
    array<char, p_t::NUMEL> charContainer;
    // error on this ^ line:
    //   implicit instantiation of undefined template 'std::__1::array<char,10>'
};
Run Code Online (Sandbox Code Playgroud)

Jer*_*fin 48

我的第一个猜测就是你忘了:

#include <array>
Run Code Online (Sandbox Code Playgroud)

...在尝试使用array模板之前.虽然你可以(至少间接地)使用几个类而不包括标题(例如,编译器可以在没有包含任何标题的情况下创建std::initializer_list类似的东西{1, 2, 3})在大多数情况下(包括std::array)你需要在使用类模板之前包含标题.