看板 C_and_CPP 關於我們 聯絡資訊
我剛剛玩了一下, 把List改一下, class BASE{ public: virtual ~BASE(){}; }; class A : public BASE { public: A(){ ptr = new int(17); }; ~A(){ if( ptr != NULL){ delete ptr; } }; private: int* ptr; }; struct EVENT{ BASE* dataPtr; EVENT* link; }; int main(){ EVENT* ptrEvent = new EVENT; ptrEvent->link = NULL; ptrEvent->dataPtr = new A; //// .... 一些cout...略//// system("pause"); } compiler卻不給我過? 錯誤訊息顯示: error C2243: '型別轉換' : 從 'A *' 至 'BASE *' 的轉換已經存在,但無法存取 怎麼會這樣? 我有點搞不懂了.... 不是可以定義父類別的指標指向其衍生類別嗎? 請各位幫我提點一下! 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.181.215 ※ 編輯: kkroy 來自: 61.230.181.215 (03/05 03:46)
LPH66:你確定是 class A : public BASE 這樣? 03/05 06:03
LPH66:因為這是在用 private 繼承或 protected 繼承才會出現的 03/05 06:03
LPH66:這是用來防止繼承來的 class 透過多型呼叫繼承來的東西 03/05 06:04
LPH66:應該說防止外面透過多型呼叫已經不是 public 的東西 03/05 06:05
※ 編輯: kkroy 來自: 61.230.181.215 (03/05 08:13)