【发布时间】:2020-03-06 10:09:59
【问题描述】:
我在我的代码中使用Eigen 3.3.7 库。我可以在我的main() 中创建和填充数据向量,如下所示:
Vector3d H1(0.0, 0.0, 1.0);
Vector3d H2 = {0.0, 0.0, 1.0};
Matrix3d D(3,2); // Matrix is only initialised
但是,如果我在一个类中做同样的事情,我会得到语法错误:
class data {
Vector3d H1(0.0, 0.0, 1.0); //syntax error
Vector3d H = {0.0, 0.0, 1.0}; //still works
MatrixXd D(3,2); //syntax error
};
问题 1:
为什么我不能在类的主体中使用相同的语法?
如何使用 Eigen 将 3×2 矩阵定义为 data 的属性?
问题 2:
我知道H1(0.0, 0.0, 1.0) 版本调用参数构造函数,但是,我不知道Vector3d H2 = {0.0, 0.0, 1.0}; 行下会发生什么。那么实际上是做什么的呢?为什么它在第二种情况下有效?
【问题讨论】:
-
注:如果你在编译时知道你的矩阵是 3x2,你可以使用
Eigen::Matrix<double, 3, 2> D;-- 而Matrix3d D(3,2);应该在运行时断言。
标签: c++ oop c++11 constructor initialization