【问题标题】: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) 中缺少),但这应该是另一个错误。
  • 此外,由于您创建了自己的类,因此您将需要一个零参数(可能只是空的)默认构造函数。更多信息:stackoverflow.com/questions/4482113/…
  • 您还需要仔细检查available constructors std::vector 有。
  • Brique 类不应有任何默认构造函数。问题条件。
  • 我只能使用iostream、vector和string。我将尝试使用指针向量和 push_back 指向实例测试的指针

标签: c++ class vector constructor


【解决方案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“矩阵”。

【讨论】:

    猜你喜欢
    • 2018-06-26
    • 1970-01-01
    • 2015-07-20
    • 2013-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多