编译器认为我构造的 MatrixXd 是函数而不是成员

Compiler thinks my construction of MatrixXd is a function and not a member

我正在创建一个 class,它应该有一个矩阵作为在 Eigen 库的 MatrixXd 类型的 header class 中声明的受保护成员。问题是,如果我将它声明为 MatrixXd name(5, 5);,其中矩阵的维度在括号之间,编译器将其视为我的 class 的方法,而不是成员。

你能帮帮我吗?

你所描述的叫做the most vexing parse,意思是所有可以被解析为函数的东西,都应该是。我们可以通过更改语法来解决这个问题。

在 C++11 中我们可以使用初始化列表语法:

MatrixXd name{5, 5};

否则,转换其中一个参数也可能有效:

MatrixXd name(int(5), 5);