如何为我的类创建数组构造函数?

Ite*_*tor 11 c++ arrays c++11

我想创建一个构造函数,它类似于int数组构造函数:int foo[3] = { 4, 5, 6 };

但我想像这样使用它:

MyClass<3> foo = { 4, 5, 6 };
Run Code Online (Sandbox Code Playgroud)

n我班上有一个私人大小的数组:

template<const int n=2>
class MyClass {

    public:

        // code...

    private:

        int numbers[n];

        // code...

};
Run Code Online (Sandbox Code Playgroud)

Ton*_*roy 18

您需要一个接受std::initializer_list参数的构造函数:

MyClass(std::initializer_list<int> l)
{
    ...if l.size() != n throw / exit / assert etc....
    std::copy(l.begin(), l.end(), &numbers[0]);
}
Run Code Online (Sandbox Code Playgroud)

TemplateRex评论说......

您可能想要警告这样的构造函数非常贪婪并且很容易导致不必要的行为.例如,MyClass不应该有构造者拿一对ints.

......并且很可能是一个过度活跃的主持人可能会删除它,所以这里相对安全.:-)

  • 您可能想要警告[此类构造函数非常贪婪](http://stackoverflow.com/q/19847960/819272)并且很容易导致不必要的行为.例如,`MyClass`不应该让构造函数采用一对`int`s例如 (5认同)