コピーコンストラクターに値を参照として渡していますが、無限ループが呼び出されています。
これが私のクラスです:
class Vector2f{
private:
GLfloat x;
GLfloat y;
public:
Vector2f();
Vector2f(const GLfloat _x, const GLfloat _y);
Vector2f(const Vector2f &_vector);
~Vector2f();
};
メソッドの実装は次のとおりです。
Vector2f::Vector2f():
x( 0.0f ),
y( 0.0f )
{
DebugLog("Vector2f constructor");
}
Vector2f::Vector2f(const GLfloat _x, const GLfloat _y):
x( _x ),
y( _y )
{
DebugLog("Vector2f constructor(%f, %f)", _x, _y);
}
Vector2f::Vector2f(const Vector2f &_vector):
x( _vector.getX() ),
y( _vector.getY() )
{
DebugLog("Vector2f copy constructor");
}
Vector2f::~Vector2f()
{
}
クラスにアクセスする方法は次のとおりです。
Vector2f tempVector1 = Vector2f(0.0f, 0.0f);
DebugLog("tempVector1 initialized");
Vector2f tempVector2;
tempVector2 = Vector2f(0.0f, 0.0f);
DebugLog("tempVector2 initialized");
私が得た結果は次のとおりです。
Vector2f constructor(0.000000, 0.000000)
tempVector1 initialized
Vector2f constructor
Vector2f constructor(0.000000, 0.000000)
Vector2f copy constructor
Vector2f copy constructor
Vector2f copy constructor
...
以前に作成されたオブジェクトを初期化しようとすると、無限ループが発生します。tempVector1をtempVector2にコピーしようとすると、無限ループも発生します。
Vector2f tempVector2;
tempVector2 = Vector2f(tempVector1);
なぜそれが起こるのですか、そしてどうすればそれが無限ループに入るのを防ぐことができますか?
前もって感謝します。