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

时间:2016-01-15 12:12:26

标签: c++ arrays c++11

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

但我想像这样使用它:

MyClass<3> foo = { 4, 5, 6 };

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

template<const int n=2>
class MyClass {

    public:

        // code...

    private:

        int numbers[n];

        // code...

};

1 个答案:

答案 0 :(得分: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]);
}

TemplateRex发表评论......

  

您可能想要警告such constructors are very greedy并且很容易导致不受欢迎的行为。例如。 MyClass不应该让构造函数使用int个。{/ p>

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