[問題] 基礎類別的指標 指向 衍伸類別

看板C_and_CPP (C/C++)作者 (sapphira)時間16年前 (2009/05/31 20:27), 編輯推噓3(306)
留言9則, 5人參與, 最新討論串1/1
我又來問笨問題了,感覺自己一直在問新手問題就覺得自己有點白活.... 我最近用到一個類別組 ,假設就是 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

05/31 20:32, , 1F
搜尋RTTI?
05/31 20:32, 1F

05/31 20:50, , 2F
感謝囉,很有用
05/31 20:50, 2F

05/31 20:55, , 3F
就單單以妳的例子來講..compile就不會過了..
05/31 20:55, 3F

05/31 21:04, , 4F
car裡放 virtual 脫節(){} 什麼都不做。car[i]->脫節() 就OK?
05/31 21:04, 4F

05/31 21:04, , 5F
不會過是指沒有public的關係嗎?
05/31 21:04, 5F

05/31 21:19, , 6F
上面那樣做不會怪怪的嗎?XD
05/31 21:19, 6F

05/31 21:20, , 7F
不知道遇到這種狀況,稍微重新設計會不會比較好?
05/31 21:20, 7F
※ 編輯: lytn 來自: 140.113.130.186 (05/31 22:10)

06/01 00:31, , 8F
原PO說到的狀況基本上 ... 重新設計會比較好
06/01 00:31, 8F

06/01 07:31, , 9F
只是想看看有沒有別招可以解這種狀況,不過這樣寫的確不太好
06/01 07:31, 9F
文章代碼(AID): #1A8dULsY (C_and_CPP)
文章代碼(AID): #1A8dULsY (C_and_CPP)