C++:当并非所有派生类都是预先知道的时候使用继承?

Lia*_*amK 1 c++ polymorphism inheritance class derived

可能重复:
有没有办法从保存其类名的字符串中实例化对象?

我正在在具有基类一些C++代码中的问题InputFile,和多个派生类的:TxtInputFile,ASCInputFile,等等,其中每一个派生类是一个特定的输入类型.

我希望能够做的是从命令行中取一个变量,然后生成正确的派生类对象来处理指定的文件类型(例如,用户TXT在命令行中指示,因此,我生成一个TXTInputFile对象并在InputFile标签下返回以供在程序的其余部分使用).

我可以使用一串IF/'ELSE`语句来做这个,将用户输入与一堆预定的文件代码进行比较,但是我希望将来能够添加对新文件类型的支持而无需编辑字符串if语句和添加新文件代码等

有没有办法在运行时访问所有派生类的一些编译器生成的表到基类?

或者可能是某种基于传递参数等于动态绑定的多态构造函数?

(例如InputFile(string)...... TXTInputFile(string temp = "TXT"),ASCInputFile(string temp = ASC")......我意识到这是参数默认值的格式,只是试图用我的思路来表明我的目标.)

提前致谢.

Ben*_*igt 5

您可以std::map从字符串到工厂函数进行映射(可能是).