2016-08-19 46 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