作者FATCLOUD (A Cloud)
看板EE_DSnP
標題Re: [問題] 小小技巧問題
時間Sun May 31 21:38:08 2009
目前我對這件事採用的做法是
存一個 map<string,CirGate*>
把不同的字串 map 到不同 [[[種類]]] 的 pointer
然後再叫那個 pointer->creatGate(...)
這樣子繼承之後就視 pointer 種類會到各個不同種類繼承後的函數
並且替每一類的 gate 都設一個 static creatGate(..)
(這樣就不用製造物件?)
但是我還沒有 compile 不知道會不會對
而且我存在 map 裡的各類 pointer 都 = 0
感覺這個動作很多餘
這樣表達不知道看不看得懂
如果溝通有障礙我再重新整理一次敘述 QQ
總而言之 key word 就三點
1.把這個 map 建構好 (GirGate* 的值不重要,只是存進去的種類可能是 CirOrGate)
map<string,CirGate*> S;
2.每種 Gate 都繼承一個 static creatGate(....)
virtual static CirXXXGate* creatGate(string n,vector<CirGate> fin){}
{return new CirXXXGate(n,fin);}
3.執行時這樣做 (依照種類指到不同的 function?)
string gateType,gateName;
vector<CirGate*> fanin;
S[gateType]->creatGate(gateName, fanin)
有沒有甚麼建議? QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.218.75
1F:→ FATCLOUD:自己感覺是很差的做法 做了不必要的事 05/31 21:41
2F:推 ric2k1:(comment on functional pointer) 其實 functional pointer 05/31 21:56
3F:→ ric2k1:是 C style 的作法, 我覺得在 C++ 可以完全用 functional 05/31 21:57
4F:→ ric2k1:object 來取代, 也許你會覺得宣告一個 clas & object 有點 05/31 21:58
5F:→ ric2k1:多餘, 但是它卻提供了較佳的擴充性. 05/31 21:58