看板 C_and_CPP 關於我們 聯絡資訊
假設 class A{ public: virtual bool test() =0; }; class B:public A{ xxxxx; public: bool test(){...}; }; class C:public A{ xxxx; public: bool test(){...}; } int main(){ B b; A *a = &b; a->test(); return 0; } 我想大家都知道這會執行在B裡面的test() 但是 有沒有辦法說不經過創造一個B's object 來存放 還是說這是必經之路 那如果這樣的話 如果我今天是要造一個放一堆亂七八糟的東西 int main(){ A *a[10]; B b[10]; C c[10]; int input,ai=0,bi=0,ci=0; while(cin >> input){ if(input){ b[bi] = B(...); a[ai] = &b[bi]; ++bi; ++ai; }else{ c[ci] = C(...); a[ai] = &c[ci]; ++ci; ++ai; } } for(int i=0; i<ai; ++i){ a[i]->test(); } return 0; } 這樣看起來很蠢(這我自己寫的) 我為了多形多弄那麼長的一條路 (我自己感覺拉) 請想問 有沒有什麼更加簡潔的做法呢? 或者是更好 更清楚的圖像? -- Every thing can be wrong unless you can proof it is true. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.113.171 ※ 編輯: ckaha 來自: 114.42.113.171 (09/27 15:55)
legnaleurc:object factory 09/27 15:59
dendrobium:A *a = new B; // 這是你要得嗎? 09/27 16:09
Cloud:一定要創造B物件吧~~a[ai] = new B() ....不用b[],c[]... 09/27 16:11
legnaleurc:我想他的意思是說想根據input的不同實體化B或C ... 09/27 16:19
ckaha:恩恩 如果不實體化B C 這樣B C 的資料是不是無法存在 09/27 16:21
spider391:推一樓 第一個直覺的想法跟一樓一樣XD 09/27 21:16