2017-08-24 41 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); 
相关问题