2017-12-31 162 views
0

같은 기본 클래스에서 파생 된 두 개의 서로 다른 클래스를 사용하여 서로의 개인 데이터 멤버에 액세스 할 수 있습니까?파생 클래스는 다른 파생 클래스의 개인 멤버를 볼 수 있습니까?

인벤토리를 가지고있는 전사와 위생병이라는 두 개의 파생 클래스가있는 캐릭터 클래스가 있습니다. 위생병이 전사의 인벤토리를 볼 수있게 해주는 checkInventory 함수를 구현할 수 있습니까? 이 함수는 기본 클래스 또는 각 파생 클래스에서 개별적으로 구현해야합니까?

+1

'friend' 키워드를 사용할 수 있습니다. 그러나 위생병과 위생병의 관계에 대해 특별한 점이 무엇인지 스스로 자문해야합니다. 특수하지 않은 경우 설계 문제가있을 가능성이 큽니다. –

+2

C++에서는 형제의 비공개를 만날 수있는 클래스를 허용하지 않습니다. – StoryTeller

+2

게임의 규칙과 게임의 측면을 나타내는 C++ 코드 부분의 가시성이 너무 가깝게 일치 할 필요는 없습니다. 위생병과 전사는 서로에게 재고를 조사하도록 허용 할 수 있지만 '공개'와 '사적'이 적절한 지에 대해 알려주지 않습니다. OOP가 "실제 세계를 모델링"한다는 개념은 잊어 버리십시오. 완전하고 난센스입니다. 그 상속은 처음에는 그 게임 메카닉을 디자인하는 잘못된 도구 일 가능성이 있습니다. –

답변

3

"파생 클래스가 다른 파생 클래스의 개인 멤버를 볼 수 있습니까?" - 아니요. 사적인 회원은 개인입니다. 파생 클래스는 기본 클래스의 및 public 멤버를 볼 수 있지만 private은 볼 수 없습니다. 그러나 friend 클래스는 비공개 회원을 볼 수 있습니다 (단, friend, 자주은 잘못된 디자인의 부호 임). 형제 클래스는 서로 공유 할 수있는 부분 (public)을 볼 수 있습니다 (공유 기반에서 볼 수있는 것 이외에).