C ++;如何将字符串(类的名称)转换为类型?

时间:2011-08-23 10:23:51

标签: c++ class types factory

函数应该包含类的名称并返回该类型的对象。如何在C ++中实现?

3 个答案:

答案 0 :(得分:7)

这称为反射,不是C ++语言的一部分。可以使用通常称为工厂模式的东西来实现。它的工作方式是,对于您希望能够创建的每种类型,您可以在可以创建此类对象的函数及其名称之间创建映射。

这个映射可以像std::map一样简单,其中键是类的名称,值是返回类的新实例的函数的函数指针。

答案 1 :(得分:2)

根据您的问题的具体要求,您可能会询问 reflection (在最常见的情况下),该语言本身不支持该语言,但您可能会找到一些库,或者工厂模式的一种形式,您可以在其中创建一个函数,该函数接收一组参数并返回相应类型的对象。第二种情况是一种更为有限的情况,其中类型必须相关,并且您必须实施工厂......

所以问题是,你可以扩展你的特定要求吗?

答案 2 :(得分:0)

您将不得不依赖于在您的对象上引入反射的框架,例如Qt元对象系统,或者编写自己的框架。

但是,这不是真正的反映,只适用于您的手动帮助,无论是需要调用工具还是必须将可实例化类注册到框架中。