簡體   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