首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要了解好的C++反射应用程序接口(用于RuntimeType标识-RTTI和运行时调用)

需要了解好的C++反射应用程序接口(用于RuntimeType标识-RTTI和运行时调用)
EN

Stack Overflow用户
提问于 2010-05-27 01:54:12
回答 2查看 784关注 0票数 1

我需要一个好的C++反射API (如Microsoft API),它使我能够确定在运行时标识的类型(类、结构、枚举、整型、浮点型、双精度型等),声明它们,并在运行时调用这些类型上的方法。

致以敬意,

Usman

EN

回答 2

Stack Overflow用户

发布于 2012-01-24 07:04:02

C++是一种极其复杂的语言。“反射”API不是语言设计的一部分,所以基本上不存在。

如果你想要通用的“反射”和“元编程”,你可以通过跳出语言并使用program transformation system (PTS)来实现。为了你的目的,这样的工具必须解析C++ (一次在多个编译单元中),为你提供对所有语言结构的访问,让你思考,也就是确定任何结构(例如,变量,表达式或其他语法结构)的类型(或其他属性),并使你能够应用任意的代码修改。显然,这不会在“运行时”发生(尽管我认为如果你坚持,你可以购买这样的机器)。

我们的DMS Software Reengineering Toolkit及其C++ Front End在分析和转换非常大的C++代码集方面有着良好的跟踪记录。有关一些详细的用例,请参阅technical papers。我认为维基百科网站上的其他工具不能处理C++,尽管它们有正确的思维方式。

虽然它不是真正的PTS (无源到源转换),但Clang也可以工作。我不确定(因为我没有全部使用),它如何收集类型信息并使用它来驱动对源代码的转换。它显然非常擅长使用这些信息来生成LLVM代码。

票数 0
EN

Stack Overflow用户

发布于 2012-01-24 07:21:42

如果你正在尝试一个插件类型的架构,http://pocoproject.org上的POCO库中的一些部分可能会让你有所收获。它将允许您在运行时加载.dll或.so并创建其中包含的类。但是调用代码仍然需要一个描述接口(或抽象基类)的头文件,以便能够获得方法的签名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2915458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档