2012-06-20 1 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

AB에 달려 있고 그 반대 인 경우 정의에 따라 순환 종속성이 있습니다. 당신이 포워드 선언으로 작업 할 수 있다는 사실은 그 사실을 바꾸지 않습니다.