初始化2- d陣列我想初始化2- d陣列m_field使用在構造函數初始化列表。 喜歡這個線程Creating 2-dimensional vector in class C++,但我得到下面列出的錯誤。CPP使用向量編譯錯誤
BoardData.h
#ifndef BOARDDATA_H
#define BOARDDATA_H
#include <vector>
class BoardData
{
public:
/** Default constructor */
BoardData(int rows, int cols);
/** Default destructor */
virtual ~BoardData();
protected:
private:
std::vector< std:vector<int> > m_field;
};
#endif // BOARDDATA_H
BoardData.cpp
#include "BoardData.h"
BoardData::BoardData(int rows, int cols) :
m_field(rows, std::vector<int>(cols,0))
{
//ctor
}
BoardData::~BoardData()
{
//dtor
}
編譯器輸出:(gcc版本4.6.3)
BoardData.h|18|error: template argument 1 is invalid|
BoardData.h|18|error: template argument 2 is invalid|
BoardData.cpp||In constructor ‘BoardData::BoardData(int, int)’:|
BoardData.cpp|4|error: expression list treated as compound expression in mem-initializer [-fpermissive]|
BoardData.cpp|4|warning: left operand of comma operator has no effect [-Wunused-value]|
BoardData.cpp|4|error: cannot convert ‘std::vector<int>’ to ‘int’ in initialization|
||=== Build finished: 4 errors, 1 warnings ===|
提示:這是* *的座標,而不是* *協調,簡稱*座標*,* COORDS *複數。 –
另外'm_row'在這裏完全是多餘的。回到這本書! (因爲這個問題也是由初學者寫的,不要複製你不懂的代碼)。 –
@BartekBanachewicz在沒有m_row的情況下將Q編輯到我之前的迭代中。 – Rob