簡體   English   中英

錯誤2d矢量類在類中初始化

[英]error 2d vector class initialization in class

我定義了Brique類。 構造函數接受一個forme ,並couleur如下:

class Brique
{
private:
  Forme   forme   ;
  Couleur couleur ;

public:
Brique(Forme _forme, Couleur _couleur)
    :forme(_forme), couleur(_couleur) {}
};

我定義了一個名為Construction的新類,該類的Construction函數應使用Brique類初始化1x1的向量。 但是當我編譯時出現了這個錯誤:

錯誤:沒有匹配的函數調用'std :: vector :: vector(Brique&)'
:contenu(1,vector(brique)){}

班級Construction守則:

class Construction
{
  private:
    vector<vector<Brique> > contenu;

  public:
    Construction(Brique& brique)
    :contenu(1,vector<Brique>(brique)){}

};

這是主要的

int main()
{
  Brique test("square", "red");
  Construction temp(test);  
  return 0;
}

我知道如何使用像這樣的指針來初始化向量:

  vec.push_back(new Brique(test) )

但這會創建一個新實例,我只想使用對實例test引用。

在類的Construction你初始化領域contenu不正確。 您提到要在構造函數中將其初始化為1x1 std::vector 為此,您必須使用std::vector::vector文檔中引用的構造函數(2)

因此,請嘗試以下操作:

class Construction {
private:
    std::vector<std::vector<Brique>> contenu;
public:
    Construction(const Brique& brique)
        : contenu(1, std::vector<Brique>(1, brique)) {}
};

這會將contenu設置為最初包含brique值的1x1“矩陣”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM