我定义了类 Brique
。构造函数接受 forme
和 couleur
,如下所示:
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/