作者lytn (sapphira)
看板C_and_CPP
標題[問題] 基礎類別的指標 指向 衍伸類別
時間Sun May 31 20:27:00 2009
我又來問笨問題了,感覺自己一直在問新手問題就覺得自己有點白活....
我最近用到一個類別組 ,假設就是
Basic Class : class basic,
Derived Class : class derived,
宣告
basic aBC;
derived aDC;
basic *pC;
這時後
pC=&aDC; 應該還是合法的吧?
我是想知道有沒有內建的功能或是好的方法可以分別出pC現在究竟指向哪一種類別?
我只想到自己設定 basic::Type="basic" 跟 derived::Type="derived"
然後用 pc->Type 去查?
舉例
class Car{
啟動();
加速();
停止();
}
class Rocket:public Car { //這邊要public 沒錯
脫節();
}
Car *cars[4];
假設裡面放兩台車跟兩支火箭好了, car[i]->脫節() 這指令顯然不會對所有i成立
所以要能告先判定指標是 指到火箭還是車這樣 .以上大概就是我的問題.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.130.186
→ weiyucsie:搜尋RTTI? 05/31 20:32
→ lytn:感謝囉,很有用 05/31 20:50
→ Cloud:就單單以妳的例子來講..compile就不會過了.. 05/31 20:55
推 zlw:car裡放 virtual 脫節(){} 什麼都不做。car[i]->脫節() 就OK? 05/31 21:04
→ zlw:不會過是指沒有public的關係嗎? 05/31 21:04
→ weiyucsie:上面那樣做不會怪怪的嗎?XD 05/31 21:19
→ weiyucsie:不知道遇到這種狀況,稍微重新設計會不會比較好? 05/31 21:20
※ 編輯: lytn 來自: 140.113.130.186 (05/31 22:10)
推 legnaleurc:原PO說到的狀況基本上 ... 重新設計會比較好 06/01 00:31
推 zlw:只是想看看有沒有別招可以解這種狀況,不過這樣寫的確不太好 06/01 07:31