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

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

本文关键字:一个 函数 成员 我的 MatrixXd 编译器      更新时间:2023-10-16

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

你可以帮我吗?

你所描述的被称为最令人烦恼的解析,意味着所有可以解析为函数的东西都应该如此。我们可以通过更改语法来解决这个问题。

在 C++11 中,我们可以使用初始值设定项列表语法:

MatrixXd name{5, 5};

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

MatrixXd name(int(5), 5);