我已经为 2D 向量(和标量)重载了operator-
(and -=
):
Vector2D Vector2D::operator-(const Vector2D& rhs) {
return Vector2D(this->GetX() - rhs.GetX(), this->GetY() - rhs.GetY());
}
为了让这个电话不抱怨no operator '-' matches these arguments
我必须这样做:
a2de::Vector2D Vector2D::GetFacingVector(const Vector2D& target, const Vector2D& source) {
a2de::Vector2D facingVec(const_cast<Vector2D&>(target) - const_cast<Vector2D&>(source));
return facingVec;
}
或这个:
a2de::Vector2D Vector2D::GetFacingVector(const Vector2D& target, const Vector2D& source) {
a2de::Vector2D facingVec(Vector2D(target) - Vector2D(source));
return facingVec;
}
这两件事似乎都是一件非常糟糕的事情。(不支持短语“仅const_cast
在您知道自己在做什么时使用,因为编译器会假设您这样做!”)
这些是正确的还是有更好的方法来完成同样的事情?