Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对非平凡多变量类使用brace init_C++_Constructor_Initialization_Initializer List_Curly Braces - Fatal编程技术网

C++ 对非平凡多变量类使用brace init

C++ 对非平凡多变量类使用brace init,c++,constructor,initialization,initializer-list,curly-braces,C++,Constructor,Initialization,Initializer List,Curly Braces,我试图使某个模板类brace可初始化,例如 template<typename T> class A { private: std::vector<T> _data; std::size_t _m; std::size_t _n; public: Matrix(std::size_t m, std::size_t n, const T &fill); // regular (non-

我试图使某个模板类brace可初始化,例如

template<typename T>
class A {
    private:
        std::vector<T> _data;
        std::size_t _m;
        std::size_t _n;

    public:
        Matrix(std::size_t m, std::size_t n, const T &fill); // regular (non-trivial) constructor
        Matrix(std::initializer_list<T> list);
};
模板
甲级{
私人:
std::vector_数据;
标准::尺寸t m;
标准:尺寸;
公众:
矩阵(std::size_t m,std::size_t n,const t&fill);//正则(非平凡)构造函数
矩阵(标准:初始值设定项列表);
};
然而,我在实现上遇到了困难。我希望能够做到:

A<int> a = {{1, 2, 3, 4}, 2, 2};
// or something similar...e.g. C++11 style brace-init
A<int> a {{1, 2, 3, 4}, 2, 2};
A={{1,2,3,4},2,2};
//或者类似的东西。C++11样式大括号初始化
A A{{1,2,3,4},2,2};
我试过:

template<typename T>
Matrix<T>::Matrix(std::initializer_list<T> list)
    : _data(*list.begin()),
      _m(*(list.begin() + 1)),
      _n(*(list.begin() + 2)) {}
模板
矩阵::矩阵(std::初始值设定项\u列表)
:_数据(*list.begin()),
_m(*(list.begin()+1)),
_n(*(list.begin()+2)){}

但这对我不起作用。救命啊

为了从初始值设定项列表转换为向量,您可以复制所有元素。 STL使用begin/end迭代器实现了这一点。下面是向量的所有可能结果

    Matrix(std::initializer_list<T> list, std::size_t m, std::size_t n)
    : _data(list.begin(), list.end()) // This is what might help
    , _m(m)
    ,_n(n)
    {

    }
矩阵(std::initializer\u列表,std::size\u t m,std::size\u t n)
:_data(list.begin(),list.end())//这可能会有所帮助
,_m(m)
,_n(n)
{
}

矩阵(std::initializer\u列表,std::size\u t m,std::size\u t n)