c++ - 类中的错误二维 vector 类初始化

标签 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 vector 。但是当我编译时我得到了这个错误:

error: no matching function for call to ‘std::vector::vector(Brique&)’
:contenu(1,vector(brique)){}

构造类代码:

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;
}

我知道如何使用这样的指针来初始化 vector :

  vec.push_back(new Brique(test) )

但这会创建一个新实例,我只想使用对我的实例 test 的引用。

最佳答案

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 设置为包含 brique 初始值的 1x1“矩阵”。

关于c++ - 类中的错误二维 vector 类初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044620/

相关文章:

c++ - 有目的地多次链接同一个对象时,如何避免多个定义错误?

c++ - 将模板函数转换为非模板类​​?

r - 在向量中查找 NA 值的索引

c++ - 转换后年份值错误

c++ - 使用 Args 的 n 个参数...从位置 m 开始

c++ - 什么时候可以在初始化列表中省略外括号?

c++ - 错误:无法在实现文件中绑定(bind)‘std::ostream

c++ - 如何将对象放置在结构中

java - 在spark中访问 vector 的元素

android - 我可以在大型项目中使用 SVG 代替 PNG 吗