這是一個相當複雜的問題。所以我有一個絕對抽象的基類和3個派生類(A,B,C)。使用基類的操作符>>創建派生類
使用std::ifstream& operator>>(std::ifstream& ifs, Base* a)
我有一個是設置這樣的一個文件:
有5 2
B 2 3
每行以任一A開始, B,C告訴我我得到的類的類型,然後是這個類的實際值。
int a, b;
std::string what;
ifs >> what >> a >> b;
if (what == "A")
{
//create an A class using a, and b.
}
從基礎運營商
所以>> I必須調用派生類的功能之一,最終「A」(基本*)會得到一個a,從funcion返回B或C類,和我在一個異構集合中保存'a'。
這可能嗎?我如何做到這一點,感覺就像我只是在我需要基類中的派生類和派生類中的基類中創建一個圓。
請參閱:http://stackoverflow.com/questions/1080448/best-practice-for-list-of-polymorphic-objects-in-c – 2013-05-05 16:06:56
謝謝,這似乎與我的問題非常相似。 – SaintHUN 2013-05-05 16:45:01