c++ - 如何在 C++ 中将 typedef 与类初始值设定项参数一起使用?
问题描述
我这样问这个问题是因为我不知道如何更好地表达它。
现在,我正在使用 Eigen 库编写一个 3D 应用程序。Eigen 只有一个 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};
}
推荐阅读
- ios - 如何以编程方式使用 swift 用 UIView 覆盖整个屏幕
- php - Laravel Passport:重写客户端中间件以从授权的自定义标头名称中检查访问令牌
- excel - 根据文本中的字符串返回特定值
- java - 如何从 26 API 以上的后台应用程序启动活动?
- javascript - 将控制台答案导出到 xml
- android - 伴随对象是否在应用程序的生命周期中保留在内存中
- javascript - 更新状态后组件无限循环
- c++ - Multithreaded algorithms work much slower
- react-native - react-native 中的选项卡导航器上的映射视图未更新
- liquibase - How to update the records using liquibase loadUpdateData and csv file