QuadTreeというクラスがあります。私は最近、そのためのコピーコンストラクターを作成しました。
QuadTree(const QuadTree &cpy);
たとえば、このコンストラクターにまだ入力していないとします。使用されていない限り、コードは正常にコンパイルされます。これで、subtractTreesという関数ができました。
QuadTree * subtractTrees(QuadTree LHS, QuadTree RHS);
コピーコンストラクターを作成する前は、このコードは問題なく機能していました。この関数を使用してプログラムをコンパイルすると、次のエラーが発生します。
Undefined Referance to QuadTree::QuadTree(QuadTree const&)
私のコピーコンストラクターがコードで使用されており、まだ入力されていないために発生するエラーのように。これは、このようなパッシブ関数(subtractTrees)へのコピーコンストラクター呼び出しがコピーコンストラクターを呼び出すことを意味しますか?
もしそうなら、コピーコンストラクターを使用している間にこれが発生するのを防ぐ方法はありますか?これを行う必要がある理由は、このような関数で使用するためにコピーすると、コードの速度が大幅に低下するためです。しかし、ツリーを簡単にコピーするには、コピーコンストラクターが必要です。
編集:コピーコンストラクターに入力するだけでエラーを修正しましたが、質問は
- そもそもコピーコンストラクタなしでどのように機能したのでしょうか。
- 使用するたびにツリーをコピーしないことで速度を節約しようとした場合、この不要なコピーコンストラクターを利用する方法はありますか?