看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《ric2k1 (Ric)》之銘言: : 不好意思,之前眼殘沒有看清楚... : 其實比較好的做法是寫成: : CirGate* Gate1 = new AI_GATE; : ... : 雖然原來你那樣寫 push_back 之後也是一樣啦! : 所以說請用 CirGate* Gate2 = _Index[n]; : 這樣才能有 polymorphism. 我想請問一下 1. AI_GATE* Gate2 = _Index[n];產生的error 是不是因為把CirGate* assign到AI_GATE*呢 如果是的話,是不是 可以把AI_GATE* assign給CirGate* 卻不能把CirGate* assign給AI_GATE* (就算骨子裡是AI_GATE*) 另外 2. AI_GATE* Gate = new AI_GATE; CirGate* Gate1 = new AI_GATE; 兩者的用法一樣嗎 還是這樣Gate就無法執行在base class中卻未在AI_GATE中被定義的function呢 : 請不要 CirGate* Gate1 = new CirGate; 哦!! 3. 請問為什麼不能new CirGate 如果裡面沒有pure virtual function也不行嗎 : 應該不會有 CirGate 的 object, 而是 AI_GATE, PI_GATE 等等, : 所以可以把 CirGate 裏頭的 virtual function 宣告成 pure virtual (i.e. = 0) : 如果有些 inherited class 的 function 沒有定義, : base class 的 virtual function 就不能是 pure virtual, : 宣告成空的 { } 也可以,但看你實際的意義。 發現自己對inheritance還是非常不了解 以上3個問題忘記老師有沒有講過了 不知道猜想的對不對 感謝回答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.249.129
e124553423:母class的指標可以接繼承那個的class的物件 12/17 19:44
e124553423:反過來則不行 12/17 19:44
e124553423:如果要用繼承產生的class的member function 12/17 19:45
e124553423:就要在母class裡面先宣告成virtual 12/17 19:45
e124553423:cirGate裡面如果有pure virtual function 12/17 19:46
e124553423:就不能生成物件,因為那個class還沒定義完全 12/17 19:47
e124553423:當然如果用CirGate*接new CirGate 12/17 19:47
e124553423:只要CirGate裡面沒有pure virtual funtion 12/17 19:48
e124553423:而且其他東西都有定義好 compile就不會有問題 12/17 19:48