2Dベクトル(およびスカラー)のoperator-
(および)をオーバーロードしました:-=
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
(「コンパイラはあなたがやっていることを想定しているので、あなたが何をしているのかを知っているときにのみ使用してください!」というフレーズにかかわらず)
これらは正しいですか、それとも同じことを達成するためのより良い方法がありますか?