私は長い間 C++ を使っていませんでしたが、今は小さな「プロジェクト」を行う必要があります。
結果が得られない問題の解決策を見つけようとして、いくつかのトピックを確認しました...
これが「疑似コード」Pair
です(私のクラスです):
Pair** pairs;
入力からテーブルのサイズを取得し、ポインターのテーブルを作成します。
pairs = new Pair*[size];
オブジェクトを作成し、その参照をポインタのテーブルに入れるループがあります。多かれ少なかれ:
while (...)
{
Pair pair(...); // calling constructor, creating object type of Pair.
pairs[i] = &pair;
i++;
}
問題は、毎回&pair
(ループのすべてのステップで)同じ数になることです。最初に作成されたオブジェクトのアドレスが 1234 であるとします。したがって、ループ内のすべてのステップで、このオブジェクトを 1234 でオーバーライドします。したがって、各ポインタpairs
は同じアドレスを指します -> 同じオブジェクト。このオブジェクトをメモリ内の新しい場所に強制的に作成したいと思います。
これらのオブジェクトを他のテーブルに配置してから、それらの参照をポインターのテーブルに渡そうとしています。
Pair* clearPairs = new Pair[size];
while (...)
{
clearPairs[i] = Pair(...);
pairs[i] = &clearPairs[i];
i++;
}
しかし、問題はまだ発生します。
ヒントはありますか?、私のコード (または思考) の間違い/エラーはありますか? 「コピーコンストラクタ」を実装しますか?