函数应该包含类的名称并返回该类型的对象。如何在C ++中实现?
答案 0 :(得分:7)
这称为反射,不是C ++语言的一部分。可以使用通常称为工厂模式的东西来实现。它的工作方式是,对于您希望能够创建的每种类型,您可以在可以创建此类对象的函数及其名称之间创建映射。
这个映射可以像std::map
一样简单,其中键是类的名称,值是返回类的新实例的函数的函数指针。
答案 1 :(得分:2)
根据您的问题的具体要求,您可能会询问 reflection (在最常见的情况下),该语言本身不支持该语言,但您可能会找到一些库,或者工厂模式的一种形式,您可以在其中创建一个函数,该函数接收一组参数并返回相应类型的对象。第二种情况是一种更为有限的情况,其中类型必须相关,并且您必须实施工厂......
所以问题是,你可以扩展你的特定要求吗?
答案 2 :(得分:0)
您将不得不依赖于在您的对象上引入反射的框架,例如Qt元对象系统,或者编写自己的框架。
但是,这不是真正的反映,只适用于您的手动帮助,无论是需要调用工具还是必须将可实例化类注册到框架中。