我遇到了作業問題。我有一個名爲Grid and Record的類。記錄是網格,用於存儲網格中每個位置訪問的次數。網格必須包含一個Record類型的數據成員,只要對網格進行更改就可以存儲該數據成員。我設法避免了循環依賴,但是我似乎遇到了導致堆棧溢出的「循環結構」問題。調用Grid構造函數創建一個Record,它創建一個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參數。 – flurry 2012-01-18 06:30:21
@Slipflurry記錄是否需要引用Grid?我認爲在沒有額外參數的情況下返回參考幾乎是不可能的(沒有不好的詭計)。也許這個任務寫錯了。 – Lalaland 2012-01-18 06:39:51
你可能是對的。有點奇怪,看來唯一的解決方案是將所有從Grid類複製到Record中,以便它不再引用Grid ... – flurry 2012-01-18 07:03:54