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

标签 c++ arrays c++11

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

但我想这样使用它:

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

我的类(class)里有一个私有(private)的n大小的数组:

template<const int n=2>
class MyClass {

    public:

        // code...

    private:

        int numbers[n];

        // code...

};

最佳答案

您需要一个接受 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评论...

You might want to warn that such constructors are very greedy and can easily lead to unwanted behavior. E.g. MyClass should not have constructors taking a pair of ints.

...并且担心过度活跃的版主可能会删除它,所以这里相对安全。 :-)

关于c++ - 如何为我的类创建数组构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34810835/

相关文章:

c++ - Hello World 和 V8

c++ - 当人们谈论并发时, "transaction"是什么意思?

c - 在数组中读取迷宫文件的数组,立方体大小不均,多余字符

java - JSON 对象数组转 Java POJO

c++ - 对静态成员的 const 引用

C++)二进制表达式的无效操作数错误与优先队列

c++ - 如何将静态网格体附加到 Actor

arrays - 如何使用 Lo-Dash 对数组进行降序排序?

c++ - STL vector 的实现

c++ - 带有提示的 std::unordered_map 插入