错误2d类中的向量类初始化

时间:2016-08-19 17:20:55

标签: c++ class vector constructor

我定义了班级Brique。构造函数接受formecouleur,如下所示:

class Brique
{
private:
  Forme   forme   ;
  Couleur couleur ;

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

我已经定义了一个名为Construction的新类,构造函数应该使用类Brique来初始化1x1的向量。但是当我编译时,我收到了这个错误:

  

错误:没有匹配的调用函数   “的std ::矢量::矢量(Brique&安培)”
  :contenu(1,矢量(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的引用。

1 个答案:

答案 0 :(得分:1)

在课程Construction中,您错误地初始化了字段contenu。您提到要在构造函数中将其初始化为1x1 std::vector。为此,您必须使用std::vector::vector documentation中引用的构造函数(2)

所以,请尝试以下方法:

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

这会将contenu设置为1x1&#34;矩阵&#34;最初包含brique的值。