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

时间:2018-06-30 17:00:56

标签: c++ types macros precompile

我之所以问这样的问题,是因为我不知道如何更好地表达它。

现在,我正在使用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) 

不起作用。

1 个答案:

答案 0 :(得分:3)

您可以从中继承并提供新的构造函数:

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