예제에서
부모 class 포인터형을 저장하는 vector가 있습니다.
그 벡터에 다가 상속 받은 자식 class 주소를 넣었습니다 .
아직 개념이 약간 모자라지만 is-a 로 가능한것 같아요 하여튼
그런데 벡터에 저장되어있는 주소에는 부모와 자식 클래스의 주소가 같이 저장되어있습니다.
하지만 포인터로 접근을 하려하면 부모 클래스의 맴버 함수밖에 안보이더라구요.
저는 자식 클래스가 저장된 일부에 접근해서 함수를 사용하고 싶은데 어떻게 해야하나요?
책에도 없는거 같고... 강제 형변환도 안되는거 같고....
부모 인스턴스만 만들어놓고 자식 클래스도 만들어 놨는데 왜 부모 인스턴스가 자식 클래스에 접근 못하냐는 어처구니 없는 질문은 아니겠지??
그게 아니라 다운 케스팅을 원하는 것 같은데 - _-) 그나저나 타입에 대한 개념이 똑바로 안서있구만....
뭐가 그게 아니야 \"부모 인스턴스만 만들어놓고\"랑 \"다운 케스팅\"이랑 차이가 뭔데? ㅋㅋㅋ
아니, 이 경우에는 \'자식---->부모------>자식\'이잖아. 인스턴스 자체는 자식임 \'ㅅ\')
내가 난독증인지 모르겠는데 그냥 다운캐스팅 하면 된다. \'보인다\'가 intelisense 의 문제라면 다운캐스팅해서 안보여도 그냥 쓰면 될것이다. 근데 vector에 부모와 자식의 포인터가 혼재해 있는 상황이라고 했으니, 인스턴스가 부모인놈을 다운캐스팅해서 쓰다 뻑날 공산이 아주 높을 것이라고 생각함
멤버 변수로 부모인지 자식인지 구별해서 다운캐스팅해. c++에서는 그 외에는 타입을 구별할 방법이 딱히 없던 것 같네. 애초에 별로 좋은 설계가 아닌 듯
ㄴ dynamic_cast를 쓰면 안전하게는 되는데 성능 ㅈㅈ
그니까 애초에 인스턴스가 자식이었던거면 코드를 병신같이 짜놓지 않은 이상 부모 자식 어쩌고 하는 문제가 안생기니까 하는 소린데 뭐가 인스턴스 자체가 자식이라는 얘기가 나와 ㅎ
dynamic_cast가 있구놔
ㄴ 자식 포인터를 부모로 업캐스트하고 다시 자식으로 다운캐스트하는거 - _-) 생각보다 자주 벌어지는 일인데 왜그러셩?
땡칠도사 난독증있냐? 누가 그렇게 안쓴다 그러던?? 넌 그렇게 쓰면서 문제 생기던? 뭥미
아니 업캐스팅된 상황에서는 문제가 발생하잖아 - -) 그리고 저걸 피하는 방법도 많기 때문에, 싫어서 안쓴다는 얘긴줄 알았지.
부모가 가지고 있는 벡터 멤버변수에다가 자식이 값을 추가로 집어넣었다는 얘기를 하고 있으니까... 자식 인스턴스 인거 같지도 않음... 그런거면 업캐스팅해도 벡터의 값이 줄어들지 않을테니까 ㅎ
부모 클래스와 자식클래스의 주소가 혼재하는 부모 클래스 주소값을 가지는 클래스 외부의 백터가 있습니당 저는 자식클래스의 함수를 사용하고 싶은데 못해여... dynamic cast 를 해봤는데 흠... 뭔가 안되네여 android:text=\"♥\"
전철이라 확인을 못하구... 좀있다가 해야할듯 ㅠㅜ android:text=\"♥\"