类中的错误二维向量类初始化

Posted

技术标签:

【中文标题】类中的错误二维向量类初始化【英文标题】:error 2d vector class initialization in class 【发布时间】:2016-08-19 17:20:54 【问题描述】:

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

class Brique

private:
  Forme   forme   ;
  Couleur couleur ;

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

我已经定义了一个名为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 的引用。

【问题讨论】:

您在contenu(1,vector&lt;Brique&gt;(brique) 中缺少),但这应该是另一个错误。 此外,由于您创建了自己的类,因此您将需要一个零参数(可能只是空的)默认构造函数。更多信息:***.com/questions/4482113/… 您还需要仔细检查available constructors std::vector 有。 Brique 类不应有任何默认构造函数。问题条件。 我只能使用iostream、vector和string。我将尝试使用指针向量和 push_back 指向实例测试的指针 【参考方案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 设置为最初包含brique 值的1x1“矩阵”。

【讨论】:

以上是关于类中的错误二维向量类初始化的主要内容,如果未能解决你的问题,请参考以下文章

类中的 C++ 类作为自定义向量(如何初始化?)

c++ 用新类初始化二维向量;默认值更改

在构造函数中初始化成员变量二维向量

编译类型向量类的私有成员时出错 - C++ [重复]

在一个类中初始化一个向量?

设置者不更改类中向量的数据