类中的错误二维向量类初始化
Posted
技术标签:
【中文标题】类中的错误二维向量类初始化【英文标题】:error 2d vector class initialization in class 【发布时间】:2016-08-19 17:20:54 【问题描述】:我定义了类Brique
。构造函数接受forme
和couleur
,如下所示:
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<Brique>(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“矩阵”。
【讨论】:
以上是关于类中的错误二维向量类初始化的主要内容,如果未能解决你的问题,请参考以下文章