gpt4 book ai didi

c++ - 为什么我不能在类中使用参数构造函数?

转载 作者:行者123 更新时间:2023-12-01 14:49:43 24 4
gpt4 key购买 nike

我正在使用 Eigen 3.3.7我的代码中的库。我可以在 main() 中使用数据创建和填充 vector 如下:

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
};

问题一:

为什么我不能在类的主体中使用相同的语法?

如何将 3×2 矩阵定义为 data 的属性与本征?

问题2:

我明白 H1(0.0, 0.0, 1.0) version 调用参数构造函数,但是,我不知道在 Vector3d H2 = {0.0, 0.0, 1.0}; 下会发生什么线。那么实际上呢?为什么它在第二种情况下有效?

最佳答案

对于第一季度,default member initializer (C++11 起) 仅支持花括号初始化器和等号初始化器,不支持括号初始化器。所以你可以

class data {
Vector3d H1{0.0, 0.0, 1.0};
Vector3d H2 = Vector3d(0.0, 0.0, 1.0); // or as you showed, Vector3d H2 = {0.0, 0.0, 1.0}
MatrixXd D1{3, 2};
MatrixXd D2 = MatrixXd(3, 2); // or MatrixXd D2 = {3,2};
};

对于第二季度, Vector3d H2 = {0.0, 0.0, 1.0};执行 copy-list-initialization (C++11 起),其效果取决于 Vector3d被执行。 (在这种情况下,它似乎与 Vector3d H1(0.0, 0.0, 1.0) 相同,即调用适当的构造函数来初始化对象。)

关于c++ - 为什么我不能在类中使用参数构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58789214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com