C ++ 11创建未知类的对象

时间:2016-09-23 23:07:12

标签: class c++11

我正在开发一个C ++应用程序,我需要创建X个类。比方说:AAA级,BBB级和CCC级。每个类对应一种我需要处理的对象。 另一方面,我有一个CVS类型的输入文件。该输入文件的一个示例如下所示:

AAA,3432443,433434,11111,45678
AAA,8778776,786698,22222,86881
BBB,4452332,112234,34543,87734

所以,我需要解析该输入文件,并根据该行的第一个元素(AAA,BBB,CCC),我需要创建相应的对象,该对象将存储行中找到的其他值。 但是,为了使用一系列条件,我不能在应用程序中“嵌入”可能的类(AAA,BBB,CCC),例如: if (token == "AAA") then AAA aaa = new AAA (params); 代替:

  • 应用程序必须保持独立于现有类,以便将来我们可以添加类DDD,EEE,... ZZZ,而无需修改创建对象的模块(在使用条件的情况下,我应该例如:if (token == "DDD") then DDD ddd = new DDD(params)。这是禁止的。
  • 我创建了一个配置文件,它在当前执行中提供了可能的类类型: AAA BBB CCC ... 通过这种方式,我可以遍历这些类类型,并与输入文件行中第一个元素读取的类型进行比较。但我陷入了如何创建一个未知类的对象的问题。像这样的东西: retrieved_type_from_input_file object = new retrieved_type_from_input_file(params); 其中“retrieve_type_from_input_file”是一个变量,它包含我应该创建的类的有效类型:AAA ... ZZZ
  • 我正在考虑通用编程。就像是: T object = new T(params); 但即使我可以在一个类中编写代码;在实现中我需要类的真实姓名。
  • 我也在思考某种工厂模式的实现,创建某种抽象的父类(“Thing”),每个人都可以从中继承(类AAA:public Thing)。但是我发现的所有模型在创建对象的那一刻,在代码的某个地方明确引用了类的名称。

请帮忙吗? 非常感谢提前!!

1 个答案:

答案 0 :(得分:0)

我猜,你需要代码生成器:

步骤1.编写一个程序,根据您的配置文件在.h,.cpp文件中生成类。

您可以在此步骤中创建/声明类的对象

步骤2.利用生成的类来构建exe文件。

这是我粗略的想法,并寻找其他人的其他可能性。