我正在尝试编译下面的代码,但我一直遇到错误
could not convert '{{1, 2}, {5, 6}}' from '<brace-enclosed initializer list>' to 'Class1'
。我正在编译-std=c++11
中的代码。我的初始化错了吗?
class Class1
{
public:
vector<vector<int> > a;
Class1(vector<vector<int> > p)
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
a[i][j] = p[i][j];
}
};
int main()
{
Class1 ClassValue = {{ 1, 2, },{ 5, 6 } };
return 0;
}
答案 0 :(得分:1)
首先,将您的行更改为:
Class1 ClassValue ({{ 1, 2 },{ 5, 6 } });
第二件事是你的构造函数无效,因为你写入不存在的内存。相反,使用:
Class1(vector<vector<int> > p):a(p){}
评论后编辑:这个会更好(更快),因为你不会第二次复制。
Class1(vector<vector<int> > p):a(move(p)){}