1
這是很常見的前置聲明,以避免循環的頭文件的依賴性,或者實現PIMPL,那麼人們可能會用類似的代碼結束:如何將unique_ptr與forward聲明類型一起使用?
class A;
class B
{
A * a;
};
當一個人試圖用的unique_ptr取代這個:
class A;
class B
{
std::unique_ptr<A> a;
};
編譯器抱怨。什麼是最好的做法,讓這個工作?
您是否閱讀過http://stackoverflow.com/questions/6012157/is-stdunique-ptrt-required-to-know-the-full-definition-of-t? –
確保'A'在聲明'std :: unique_ptr '之前被定義(不僅僅是前向聲明)。默認情況下,'unique_ptr'使用運算符'delete'(或變體)來釋放對象,並且需要使用基本的非類類型('int',枚舉,聯合等)或調用' struct' /'class'類型(不會聲明只有類的前向聲明)。 – Peter
只需定義知道完整類型時需要知道的所有內容。 http://coliru.stacked-crooked.com/a/92407ffd3e333a97 –