这是一个相当复杂的问题。所以我有一个绝对抽象的基类和 3 个派生类(A、B、C)。
使用std::ifstream& operator>>(std::ifstream& ifs, Base* a)
我有一个设置如下的文件:
一个 5 2
乙 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.
}
因此,从 Base 运算符>>我必须调用派生类函数之一,其中最终“a”(Base *)将获得从函数返回的 A、B 或 C 类,并且我正在保存“a”在异构集合中。
这可能吗?我该怎么做,感觉就像我只是在做一个圆圈,我需要 Base 类中的 Derived 类和 Derived 类中的 Base 类。