2016-03-25 2 views
-1

なぜこれが私にerror: ‘matrixSize’ is not a typeを与えるのですか?ベクトルを使って行列を表現する

int matrixSize = 10; 
vector<vector<double> > matrix(matrixSize, vector<double>(matrixSize)); 

ここで問題は何ですか? on cppreference私はそのvvectorのコンストラクタが任意の型を必要としているのを見ていません。

+2

GCC 4.9.3 -std = C++ 14には、うまくコンパイルします。 – xinaiz

+0

これはエラーをもたらしません。このエラーは、これらのコード行から得られたものですか?たぶん何か他にあなたにこのエラーがありますか? – DimChtz

+0

実際のコンパイラの嘔吐を含むだけでなく、それの解釈も含まれます。コードは私にとってはうまく見えますので、私たちは本当にあなたを助けるためにエラーが必要です。 –

答えて

2

コンストラクタ内の行列の定義を移動します。変更:コンストラクタの内部

vector<vector<double> > matrix; 

そして:

vector<vector<double> > matrix(matrixSize, vector<double>(matrixSize)); 

CParser(const string & str) : iss(str) { 
     this->matrix = vector<vector<double>>(this->matrixSize, vector<double>(this->matrixSize)); 
} 
+0

"this->"本当に必要ですか?私はコンストラクタの初期化子リストでmatrixSizeを初期化することができます – lllook

+0

場合によってはyesです。しかし、私はいつもそれを使うのが良い習慣だと思う。 'matrix'と' matrixSize'は両方とも 'CParser'のメンバーなので、私は' this'を使っています。 – DimChtz

+0

はい、コンストラクタの初期化リストでmatrixSizeを初期化することができます – DimChtz

関連する問題