函数应该接受一个类的名称并返回该类型的对象。如何在C++中做到这一点?C++;如何将一个字符串(类的名称)变成一个类型?
2
A
回答
7
这就是所谓的反射,不是C++语言的一部分。可以用通常称为工厂模式的东西来实现。它的工作方式是,对于您想要创建的每种类型,都可以在可以创建此类型的对象的函数与其名称之间创建映射。
这种映射可能像std::map
那样简单,其中键是类的名称,值是指向返回类的新实例的函数的函数指针。
0
你将不得不依赖引入反射对象的框架,比如Qt元对象系统,或者编写你自己的对象。
但是,这不是真实的反射,只能用于手动帮助,无论是以需要调用工具的形式,还是以必须将可实例化类注册到框架的形式。
2
根据您的问题的确切要求,您可能会询问有关反思(在最常见的情况下),该语言不是本机支持的,但您可能会找到某些库或某种形式的工厂模式,您可以在其中创建一个接收一组参数并返回相应类型对象的函数。第二种情况是一种更为有限的情况,其中类型必须相关,并且必须实施工厂...
因此,您可以根据您的特定要求扩展问题吗??
相关问题
- 1. 演员从类型名称为一个字符串类型
- 2. C#在一个字符串类型
- 3. 如何将一个POINTER(c_char)类型的变体赋值给一个字符串?
- 4. C#创建一个名称为动态字符串的类
- 5. 如何用字符串的名称创建一个类方法?
- 6. 如何将一个类型记录为一个名称?
- 7. 如何将一组字符串声明为一个类型?
- 8. 如何给一个类引用一个可引用的字符串名称?
- 9. 将不同数据类型的几个变量组合成一个字符串
- 10. 包括字符串,字符串不会命名一个类型
- 11. c#中的类 - 创建一个包含类的实例名称的字符串
- 12. 将字符串转换为另一个变量的类型
- 13. '字符串'不会命名一个类型 - C++错误
- 14. 解析来自一个字符串类型名复用C#
- 15. 如何将一个AppleScript列表变成一个字符串
- 16. Java:如何获得一个字符(或其类型分类)的Unicode名称?
- 17. C# - 如何根据字符串返回一个类型
- 18. 如何写一个泛型类型的扩展方法,其中一个类型变量必须是字符串?
- 19. 如何同时将多个名称分配给一个C#类
- 20. 将字符串转换为类型,其中类型是一个变量
- 21. 如何将模板化的类型名称作为字符串?
- 22. 如何从一个类获取字符串到另一个类?
- 23. 类型从一个字符串数组
- 24. 如何将一个字符串分成两种不同的类型?
- 25. 如何获得一个变量的值在一个字符串中的名称?
- 26. 如何从类型名称和程序集名称中加载一个类型
- 27. Java,将字符串从一个类传递到另一个类
- 28. 将字符串从一个类传递到另一个类
- 29. Haxe - 从字符串名称中创建一个类的实例
- 30. 如何声明一个变量类型知道它的类型由一个字符串
我认为总称是内省。 –
@Preet:正如术语所言,来自拉丁文的intro_spection_只会成为关于_observing_的反射部分。 –
+1哇 - 很好的反击! –