私は Vector2D クラスに取り組んでいます。ベクトル加算とスカラー加算の両方を +=/+ 演算子で実装するのは理にかなっていると思います。
問題は、この明らかな引数のあいまいさを回避する方法が本当にわからないことです.Clangは次のように言っています:
vector2d_test.cpp:17:16: error: use of overloaded operator
'+=' is ambiguous (with operand types 'Vector2D<float>' and 'int')
vector += 1;
~~~~~~ ^ ~~~~~~~
vector2d.hpp:34:18: note: candidate function
Vector2D<T>& operator+=(const Vector2D<T>& other)
^
vector2d.hpp:41:18: note: candidate function
Vector2D<T>& operator+=(const T summand) const
以下に 2 つの関数を示します。
Vector2D<T>& operator+=(const Vector2D<T>& other)
{
x += other.x;
y += other.y;
return *this;
}
template <typename S>
Vector2D<T>& operator+=(const S summand) const
{
x += summand;
y += summand;
return *this;
}
それで...これについて私ができることはありますか?