10.4 서로를 참조하는 제휴 관계

보물창고·2021년 8월 11일
0

전방선언을 이용한 예


: 전방 선언하지 않았다고 에러가 발생하지만, 빨간 줄이 안뜬다.
비주얼에서는 문제가 없지만, 컴파일러 입장에서는 에러라고 하는 것이다.
컴파일러는 컴파일러고 비주얼은 비주얼이다. 따로따로임!

-> 클래스간의 서로를 참조해야 하므로 전방선언을 해야한다.

전방선언을 사용용도에 맞게 적절하게 사용하자.
어느 한쪽이 주인이 아닌 동등한 관계이다.

다른 클래스의 private 멤버 참조

  • Patient 클래스에서 Doctor 클래스의 private 멤버인 mName을 참조하려고 한다.
    Get함수를 만드려고 했는데,,, Doctor클래스에 private 멤버 변수가 엄청 많은 상황에서 하나씩 참조하려고 하면 클래스가 지저분해진다.
    따라서 friend 를 통해 참조가 가능하게 하는 편이 깔끔하다.


-> 클래스에 접근은 가능하게 되었지만, 전방선언에 의해 오류가 발생햇다.

왜냐하면 전방선언은 그냥 이러한 클래스가 있다라는 것을 뜻하는 것이다.
Doctor 클래스 안에 mName이라는 변수가 있는지, Doctor 클래스의 크기가 얼마인지 알 수 없다.

이때 우리가 해결할 수 있는 방법은 함수 정의를 외부로 빼는 것이다.

  • 정의부는 외부로 빼고,

  • 클래스에는 선언만 하자.

클래스간 참조를 하면서, 멤버에 접근하려고 할때는
위의 예처럼,

  • 전방 선언도 하고,
  • friend 화하고
  • 일부 함수를 외부로 빼야하는 경우도 있다.
profile
🔥🔥🔥

0개의 댓글