課題に問題があります。私はグリッドとレコードと呼ばれるクラスを持っています。レコードは、グリッド内の各位置に何回アクセスしたかを格納するグリッドです。 Gridには、Gridに変更が加えられるたびに格納できるRecordタイプのデータメンバーが含まれている必要があります。私は循環依存を避けることができましたが、スタックオーバーフローを引き起こす「循環構造」に問題があるようです。グリッドコンストラクタを呼び出すとレコードが作成され、別のレコードを作成しようとするグリッドが作成されます。私の最初の考えは、GridのRecordデータメンバをNULLに初期化するポインタにしてから、実際にコンストラクタの外でRecordオブジェクトを作成することでしたが、割り当ては特にGridのRecordデータメンバはRecord型でなければなりません。 Recordにデフォルトのコンストラクタを与えることも許可されていないので、実装が間違っていると推測しています。どのように私はこの問題を解決するための任意の提案?C++円形建設問題
Record::Record(int rows, int cols) : grid(new Grid(rows, cols)) {};
Grid::Grid(int rows, int cols) : record(new Record(rows, cols)) {};
私は残念ながら、コンストラクタの引数を変更することはできませんしています。グリッドとレコードの両方がintである2つの引数を取る必要があります。 – flurry
@ SlipflurryレコードにGridへの参照が必要ですか?余計なパラメータを使わずにリファレンスを返すことは、ほとんど不可能だと思います。多分、その課題は間違って書かれたでしょう。 – Lalaland
あなたは正しいかもしれません。それはもう唯一の解決策は、GridクラスからすべてをRecordにコピーして、Gridを参照しないようにすることです... – flurry