繁体   English   中英

无法从大括号括起来的初始化列表转换

[英]Could not convert from brace-enclosed initializer list

我正在尝试编译下面的代码,但我一直遇到错误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;
}

首先,将您的线路更改为:

Class1 ClassValue ({{ 1, 2 },{ 5, 6 } });

第二件事是您的构造函数无效,因为您写入不存在的内存。 相反,使用:

Class1(vector<vector<int> > p):a(p){}

评论后编辑:这个会更好(更快),因为你不会第二次复制。

Class1(vector<vector<int> > p):a(move(p)){}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM