2017-08-24 9 views
1

私はEigenライブラリからタイプMatrixXdのヘッダークラ​​スで宣言された保護されたメンバーとして行列を持つクラスを作成しています。問題は、MatrixXd name(5, 5);と宣言すると、行列の次元が角括弧の間にある場合、コンパイラはそれをメンバではなくクラスのメソッドとして見なすことです。私のMatrixXdの構築はメンバーではなく関数であると考えています

私を助けることができますか?

+0

ありがとうpingulを、私は使用しています 'C++ 11'とあなたの提案は私の問題を解決しました。 – Mattia

+0

「名前空間Eigenを使用してください」と試しましたか?または "Eigen :: MatrixXd;"を使用して – Ritesh

答えて

2

あなたが説明するものは、the most vexing parseと呼ばれ、関数として解析できるすべてのものでなければならないことを意味します。これを解決するには、構文を変更します。同様に動作する可能性があるのいずれかの引数をキャストしそうでなければ

MatrixXd name{5, 5}; 

、::C++ 11我々は初期化子リストの構文を使用することができて

MatrixXd name(int(5), 5); 
関連する問題