比方說,我有兩個類:C++每個類依賴於第二個
class One {
Two *somevar = new Two;
// (...)
};
class Two {
One *somevar = new One;
// (...)
}
而這是不可能的編譯類似的東西。如何處理它?
比方說,我有兩個類:C++每個類依賴於第二個
class One {
Two *somevar = new Two;
// (...)
};
class Two {
One *somevar = new One;
// (...)
}
而這是不可能的編譯類似的東西。如何處理它?
因爲所有你正在築巢是一個指針,嘗試:
class Two;
class One {
Two *somevar = new Two;
// (...)
};
class Two {
One *somevar = new One;
// (...)
}
通過前瞻性聲明類Two
,你給編譯器足夠的信息,以便能夠建立內部One
類的指針。如果你試圖自己嵌套類而不是指針,那麼就沒有辦法解決這個問題。
我想我找到了解決辦法:
// class Type instead of Type
// so:
class Two *somevar = new class Two;
@bta有正確的答案 - 所有你需要的是向前聲明。然而,這種「相互擁抱」對我來說總是一種代碼味道。我並不是說這是正確的,但我所說的是,以我個人的經驗來看,每當遇到這種情況時,就意味着我沒有仔細考慮過我的班級結構。通過重組班級,問題通常會消失。你有沒有考慮過你所擁有的不是一個編碼問題,而是一個設計問題? – Mawg 2010-06-29 00:24:17