看板 C_and_CPP 關於我們 聯絡資訊
我又來問笨問題了,感覺自己一直在問新手問題就覺得自己有點白活.... 我最近用到一個類別組 ,假設就是 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