gpt4 book ai didi

c++ - 如何在 C++ 中将 typedef 与类初始值设定项参数一起使用?

转载 作者:行者123 更新时间:2023-11-27 23:45:24 25 4
gpt4 key购买 nike

我这样问这个问题是因为我不知道如何更好地表达它。

现在,我正在使用 Eigen 库编写 3D 应用程序。 Eigen 只有一个 Vector 类,但我需要不同的 vector 和点数据类型。

两者都可以用一个

表示
Eigen::Vector4d(x,y,z,w) 

其中 w 对于点为 1,对于 vector 为 0。

我知道我可以使用

来定义一个类型
typedef vec3d Eigen::Vector4d

#define point3d Eigen::Vector4d

但是有没有办法以某种方式定义它,使 w 对于 vector 始终为 0,对于点始终为 1?

typedef vec3d(x,y,z) Eigen::Vector4d(x,y,z,w) 

不起作用。

最佳答案

你可以从它继承并提供一个新的构造函数:

struct vec3d : Eigen::Vector4d {
vec3d(double x, double y, double z) : Vector4d(x, y, z, 0) {}
};

或者,我更喜欢编写一个工厂函数,如下所示:

Eigen::Vector4D make_vector(double x, double y, double z) {
return {x, y, z, 0};
}

关于c++ - 如何在 C++ 中将 typedef 与类初始值设定项参数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51116890/

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