2015-11-08 42 views
2

好吧我目前正在構建一個使用std向量的矩陣,這意味着它們上面有一個單元格或者細菌。因此,我做了一個「死亡」班,成爲細胞和細菌的母親。所以在矩陣中,沒有任何一個的案例將會死亡。但是,當我嘗試構建矩陣時,通過類似於:world [x] [y] = new cell()/ world [x] [y] = new bacterie();它不會編譯。初始化std向量中的數據類型

所以我的問題是,我怎麼能初始化它?

這是我的代碼,它對西班牙語很抱歉。

matrizB[fila-1][columna-1] = new BacteriaM(); 

matrizB其一個

vector<vector <dead>> matrizB(n); 

和BacteriaM是從死繼承的類; n由用戶定義。 (對於錯誤的語法和編程,我是編程新手)

+0

'矢量<矢量> matrizB(N);'你錯過了星號。 – 101010

回答

0

您遇到的主要問題是運營商new。我假設您在創建對象時不習慣於使用C++new operator for C++不是簡單地創建一個對象,而是一個指向對象的指針。所以,你可以去matrix[x][y] = cell()或更改爲vector< vector < dead* > >並按照@Duthomhas所說的選擇智能指針。這樣,您可以更好地管理內存,特別是在處理矢量矢量時。

Note: Watch out for cell() constructors!C++會感到困惑,並認爲你是在聲明一個函數...

1

爲了使用多態性,您的矩陣元素必須是指針

vector<vector <dead*>> matrizB(n); 

您將不得不小心管理元素的內存。可能需要查看智能指針(std::shared_ptrstd::unique_ptr - 以較準確爲準)。

希望這會有所幫助。