부모 클래스에서 자식 클래스의 private 멤버함수에 접근할 수 있는지 궁금합니다.

jungong87의 이미지

c++로 개발하고 있는데요.

상속관계가 4단계로 나누어져 있습니다. A(최상위) -> B -> C -> D(말단) 의 순서로 상속받고 있는데요

A 클래스에서 virtual로 선언된 함수가 있습니다.(function() 이라고 가정 하겠습니다.) 그것을 C에서 상속받아 구현하고 있는데요. (다른 클래스에는 구현되어 있지 않음)

그 구현된 함수가 C에서 private 멤버로 선언이 되어 있습니다.

클래스를 인스턴스 화 할때는 A* = new D 의 형식으로 인스턴스화 되고 있습니다.

이럴 때 A->function() 이런 식으로 호출이 가능한지요?

아직 내공이 부족하여 질문 올립니다.

shint의 이미지

ㅇ_ㅇ;; 에러는 찾아보면 되겠죠...
http://codepad.org/3AtlJPfr

해보니 되네요. 생성자에서 {}를 빼먹었네요.

A에 virtual이 있으면. test A 출력 http://codepad.org/MzMBzv24
A에 virtual이 없으면. test C 출력 http://codepad.org/vaRPs436

해보세요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

klara의 이미지

문제 없습니다. 오버라이딩은 한객체(부모)가 다른객체(자식)를 호출하는게 아닙니다.