私は実践的な演習として数学ライブラリを書いています。=演算子をオーバーロードすると、いくつかの問題が発生しました。デバッグしたところ、vertex1=vertex2を呼び出すと代わりにコピーコンストラクターが呼び出されることに気付きました。
ヘッダーファイルには次のものがあります。
//constructors
vector3();
vector3( vector3 &v );
vector3(float ix, float iy, float iz);
//operator overloading
vector3 operator =(vector3 p);
....
私が実装したソースファイルでは、次のようになります。
vector3 vector3::operator =(vector3 p)
{
vector3 v3;
v3.x = p.x;
v3.y = p.y;
v3.z = p.z;
return v3;
}
後で、外積法があり、次のように使用したいと思います。
vector3 v3;
v3 = v1.crossProduct(v2);
エラーメッセージは次のとおりです。エラー: `vector3 :: vector3(vector3)'を呼び出すための一致する関数がありませんが、コピーコンストラクターを呼び出したくありません。