【发布时间】:2018-02-11 13:43:20
【问题描述】:
我正在使用两个库,一个是线性代数数学库,另一个是物理库。具体来说,我需要在 vec3 和 btVector3 类型之间进行转换。我以为我可以这样做:
void operator=(btVector3& lhs, const vec3& rhs)
{
lhs.setX(rhs.x); lhs.setY(rhs.y); lhs.setZ(rhs.z);
}
void operator=(vec3& lhs, const btVector3 rhs)
{
lhs.x = rhs.x(); lhs.y = rhs.y(); lhs.z = rhs.z();
}
但我发现全局运算符重载只允许用于某些复合运算符,例如 +=、-= 等。显然赋值运算符必须是作为非静态成员函数的单参数函数。首先我想知道这是为什么。我已经看到了其他答案,但我认为我没有看到原因。其次,我还有另外一个问题,vec3 和 btVector3 这两种类型不是我的类型,所以我真的不想修改这些类(如果我什至不确定),可以简单地在这些类的标题?
【问题讨论】:
-
我找到了几个assign函数,你是说std::function::assign()函数吗?哦,你的意思是创建我自己的分配函数。
标签: c++ operator-overloading assignment-operator