gpt4 book ai didi

C++:Vector3 类型 "wall"?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:14 26 4
gpt4 key购买 nike

假设我有:

class Vector3 {
float x, y, z;
... bunch of cuntions ..
static operator+(const Vector3&, const Vector3);
};

现在,假设我想要上课:

Position, Velocity, 

与 Vector3 完全一样(基本上,我想要

typedef Vector3 Position;
typedef Vector3 Velocity;

除了,给出:

Position position;
Vector3 vector3;
Velocity velocity;

我想确保以下不能发生:

position + vector3;
vector3 + velocity;
velocity + position;

实现此目标的最佳方法是什么?

最佳答案

我会推荐这样的东西:

template<typename tag>
class Vector3 {
float x, y, z;
... bunch of functions ..
static operator+(const Vector3&, const Vector3);
};

struct position_tag {};
struct velocity_tag {};
typedef Vector3<position_tag> Position;
typedef Vector3<velocity_tag> Velocity;

请参阅此处以获得更详细的示例:Boost MPL

关于C++:Vector3 类型 "wall"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2451175/

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