2012-06-20 47 views
0
//A.h 
class B; 
class A{ 
    void Stuff(); 
    B* FOO(): 
    B* _b; 
} 
extern A* A_A(); 

//A.cpp 
#include "A.h" 
#include "B.h" 
B* A::FOO(){ 
    return(_b); 
} 

//B.h 
class B{ 
void BOO(); 
} 

//B.cpp 
#include "A.h" 
#include "B.h" 
void B::BOO(){ 
A_A->Stuff(); 
} 

這裏有一個交叉包含.cpp文件中的.h文件。所以他們都相互依賴。雖然使用前向聲明和指針似乎會打破循環。所以我的問題是:這是一個循環依賴?爲什麼?這是一個循環依賴項

+0

除了A :: Stuff未定義之外,我沒有看到任何問題。你有什麼問題? – Dani

+0

在這裏工作中,我的組中有一些人將此稱爲循環依賴。我不認爲這是在我說出來之前我想仔細檢查一下。 – user1470149

回答

0

你打破了通知包括鏈與前向聲明,但你仍然有一個邏輯循環依賴之間的A和B.他們每個需要的東西提供的其他類。

關於上述評論,您絕不應該爲您的團隊帶來問題而感到羞恥。如果發現你錯了,那麼你已經學到了一些東西。

1

A依賴於B,反之亦然,根據定義,您有一個循環依賴關係。事實上,你可以讓它與前向聲明一起工作並不會改變這一事實。