这是一个相当复杂的问题。所以我有一个绝对抽象的基类和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