我試圖做一個函數f是這樣工作的:模式初始化未知子類
StorageObject::addItem (const AbstractBase& base) {
AbstractBase* storage = new Derived1(base);
}
不過,我想f控制類Derived2的,Derived3等工作爲好。有沒有辦法讓f調用正確的構造函數,具體取決於傳遞給它的AbstractBase的特定子類,而不使用typecodes?
爲了把問題放在上下文中,我使用這個函數來初始化一個類中的對象列表。雖然我可以做類似
Derived1* temp = new Derived1();
storageobject.addItem(*temp);
delete temp;
我寧願做這樣的事情
storageobject.addItem(Derived1());
,並有storageobject處理一切。
爲什麼不將參考存儲在storageobject中? – Zed 2009-08-20 08:46:07