2013-04-07 52 views
-1

我有一個班正在變得太大,應該分手。然而,要分離出來的類理想地需要訪問主類的變量。我正在試圖製作一個模板類,它具有對主類的引用,但我似乎遇到了包含遞歸的問題。我搜索了並且有人說你可以使用前向聲明,但是我仍然會得到不完整類型的錯誤。我知道這是一個常見問題,我已經看到線程Headers Including Each Other in C++,但沒有一個答案似乎有意義或工作。class is reference istelf

任何幫助,非常感謝。

classmain.h

class classref; 
class classmain 
{ 
public: 
    classmain() 
:B(*this) 
{}; 

classref B; 
int a; 
}; 

classref.h

#include "classmain.h" 

class classref 
{ 
public: 
classref(classmain& ref) 
    :A(ref) 
{}; 

classmain& A; 
}; 
+0

您正在創建一個循環依賴關係,您必須重新考慮... – 2013-04-07 09:05:09

+1

您有您的前瞻性聲明幷包含反向。 – chris 2013-04-07 09:05:46

回答

2

這是因爲你聲明classmain::Bclassref類的一個實例。那麼它需要完整的定義classref

我會建議你實際上聲明中classref.h文件classmain代替,並且包括classmain.hclassref.h。所以與你現在在聲明和包含方面所做的相反。

+0

嗨,謝謝你的回覆。這有效,但我現在不能從classref中訪問classmain的成員變量? – joelyboy94 2013-04-07 09:11:51

+1

如果你將'classmain'的實現放在一個包含2個頭文件的源文件中,你可以這樣做。 – Synxis 2013-04-07 09:29:54

相關問題