1
我正在創建一個類,該類應該有一個矩陣作爲在Eigen庫的類型爲MatrixXd
的頭類中聲明的受保護成員。問題是,如果我聲明它爲MatrixXd name(5, 5);
,其中矩陣的尺寸位於括號之間,編譯器將其視爲我的類的一種方法,而不是成員。編譯器認爲我的MatrixXd是一個函數而不是成員
你能幫我嗎?
我正在創建一個類,該類應該有一個矩陣作爲在Eigen庫的類型爲MatrixXd
的頭類中聲明的受保護成員。問題是,如果我聲明它爲MatrixXd name(5, 5);
,其中矩陣的尺寸位於括號之間,編譯器將其視爲我的類的一種方法,而不是成員。編譯器認爲我的MatrixXd是一個函數而不是成員
你能幫我嗎?
你描述的內容叫the most vexing parse,意思是所有可以解析爲函數的東西應該是。我們可以通過改變語法來解決這個問題。
在C++ 11我們可以使用初始化列表語法:
MatrixXd name{5, 5};
否則,鑄造參數之一可能工作以及:
MatrixXd name(int(5), 5);
感謝pingul,我使用'C++ 11',你的建議解決了我的問題。 – Mattia
你嘗試過使用命名空間Eigen嗎?或使用「Eigen :: MatrixXd」 – Ritesh