编译器认为我构造的 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);
我正在创建一个 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);