CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): taiyou (whoami)
날 짜 (Date): 2006년 3월 21일 화요일 오전 12시 08분 28초
제 목(Title): Re: [Q] Overriding을 이용할 때


실은 필요한게,

base::foo(base *)
A::foo(A*)
B::foo(B*)
C::foo(C*)

이것 뿐이지요. 맨 위의 것은 아래 세개 범주에 포함되지 않을때 쓰려고 하는 
것이구요.

list에서 base*를 두개 뽑아서 이게 실제로 A instance라면 A::foo(A*)가 
호출되도록 하고 싶은거지요. 만약 하나는 A, 하나는 B라면 A::foo(B*)이 없기 
때문에 A::foo(base*)가 대신 호출되고요. 

그런데 list에서 뽑고 보니, 이게 base*인지라, 두개가 모두 A인지 확인하고 
두개 모두 A로 다시 casting 하고 나서야 A::foo(A*)를 호출할수 있다는 
거지요.

이런 방법 밖에 없는지, 혹은 다른 보다 세련된  override를 쓰는 방법이 
있는지 궁금합니다.

다시한번 감사드립니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.