我问这样的问题是因为我不知道如何更好地表达它。
现在,我正在使用Eigen库编写3D应用程序。本征只有一个Vector类,但是我需要不同的向量和点数据类型。
两者都可以用
Eigen::Vector4d(x,y,z,w)
其中w对于一个点是1,对于一个矢量是0。
我知道我可以通过使用定义类型
typedef vec3d Eigen::Vector4d
要么
#define point3d Eigen::Vector4d
但是有没有一种方法可以定义它,使得向量的w总是为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/