2016-08-19 47 views
1

我定义了类Brique。构造函数接受一个formecouleur如下:错误2d类中的向量类初始化

class Brique 
{ 
private: 
    Forme forme ; 
    Couleur couleur ; 

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

我已经定义了一个名为Construction其构造应使用类Brique初始化的1x1的向量新类。但是,当我整理我得到这个错误:

error: no matching function for call to ‘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的引用。

+2

你在'contenu(1,vector (brique)'''中缺少一个''''但是这应该是一个不同的错误 – NathanOliver

+1

你也需要一个零参数(也许只是空的)你创建了自己的。更多信息:http://stackoverflow.com/questions/4482113/why-would-someone-provide-an-empty-default-constructor-for-a-class –

+1

你还需要检查double检查[可用构造函数](http://en.cppreference.com/w/cpp/container/vector/vector)'std :: vector'具有。 – NathanOliver

回答

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的 “矩阵”。

+0

的指针,谢谢它的工作;) – daleonpz