C++에서 코딩을 할 때 객체가 서로 참조를 해야 할 때가 있다. 
 A.c A.h가 있고 B.c B.h가 있을 때 양 헤더에 include를 시켜주면 클래스가 redefine되었다는 에러가 나온다. 이를 해결해기 위해선 다음과 같이 해야 한다. 

 C++에서는 predeclaration의 개념을 제공한다. 

  • A.H
    #include "B.H"
    class A
    {
        B* m_pb;
        A(B* pb);
    };
  • B.H
    class A; // 이렇게 선언만 합니다.
    class B
    {
      A* m_pa;
      B(A* pa);
    };
     
  • A.CPP
    #include "A.H"
    A::A(B* pb)
    {
      m_pb = pb;
    }
     
  • B.CPP
    #include "B.H"
    #include "A.H"  // 여기서 참조하는 것은 상호 참조가 아닙니다.
    B::B(A* pa)
    {
      m_pa = pa;
    }


신고
« PREV : 1 : ··· : 564 : 565 : 566 : 567 : 568 : 569 : 570 : 571 : 572 : NEXT »

티스토리 툴바