我編譯如下代碼:不完全型嵌套名指定命名
class B;
class A {
A();
friend A B::newAObject();
};
class B {
friend A::A();
public:
A newAObject();
};
這似乎很奇怪,但這個想法是有一個類A
,只能通過B
類型的對象產生(誰可能會是一個單身人士)。
問題是我創建了這些對象之間的循環依賴關係。 A
必須在B
之前定義,而B
必須在A
之前定義。顯然,前向聲明B
不夠好,B
實際上必須在A
之前完全定義(反之亦然)。
我該如何解決這個問題?
編輯:實際的錯誤是:在嵌套名稱說明符中命名的不完整類型'B'。
注意:還有另一個類似於這裏的帖子:Error: incomplete type used in nested name specifier,但它很重要的模板化,這讓我困惑,因此這篇文章。
使單一方法成爲朋友有點奇怪。你確定你不想讓全班同學成爲朋友嗎? –
我不知道這是可能的。它是如何完成的?我只是在'A'裏寫'朋友類B'而在'B'裏寫'朋友類A'? – anthropomorphic
這是正確的... –