2017-08-24 64 views
1

我正在創建一個類,該類應該有一個矩陣作爲在Eigen庫的類型爲MatrixXd的頭類中聲明的受保護成員。問題是,如果我聲明它爲MatrixXd name(5, 5);,其中矩陣的尺寸位於括號之間,編譯器將其視爲我的類的一種方法,而不是成員。編譯器認爲我的MatrixXd是一個函數而不是成員

你能幫我嗎?

+0

感謝pingul,我使用'C++ 11',你的建議解決了我的問題。 – Mattia

+0

你嘗試過使用命名空間Eigen嗎?或使用「Eigen :: MatrixXd」 – Ritesh

回答

2

你描述的內容叫the most vexing parse,意思是所有可以解析爲函數的東西應該是。我們可以通過改變語法來解決這個問題。

在C++ 11我們可以使用初始化列表語法:

MatrixXd name{5, 5}; 

否則,鑄造參數之一可能工作以及:

MatrixXd name(int(5), 5); 
相關問題