问题标签 [rtti]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在 C++ 中激活 RTTI
任何人都可以告诉我在使用 unix 时如何在 c++ 中激活 RTTI。听说可以禁用和启用。在我的 Unix 环境中,我如何检查 RTTI 是启用还是禁用?
我aCC
在 HPUX 上使用编译器。
delphi - Delphi 新 RTTI 的实际使用 - Attributes,Values
我在 Delphi 中找到了关于新 RTTI 的一个很好的解释,但我不明白我所读到的所有内容中的一件重要的事情 - 我在哪里可以使用它?
它应该取代什么?
delphi - Delphi获取表单组件属性的值
我正在实现一个样板功能——允许用户 TLabel
在运行时更改某些组件的描述——比如 s。例如
...
在设计时,标签的标题属性值是“名字”,当应用程序运行时,有一个功能允许用户将标题值更改为“其他名称”。一旦更改,FooClass 类实例的标签标题将立即更新。
现在的问题是,如果用户出于某种原因想要恢复到say 'First Name' 的设计时间值,这似乎是不可能的。
我可以使用 RTTIContext 方法和所有其他方法,但归根结底,我似乎需要该类的实例来更改值,并且由于这已经被更改了 - 我似乎遇到了障碍绕过它。
我的问题是——有没有办法在不实例化类的情况下将旧的 RTTI 方法或新的 RTTIContext 东西用于类成员的属性——即从 ClassType 定义中获取属性。
这是我尝试这样做的代码片段:
我收到各种各样的错误,任何帮助将不胜感激。
c++ - Passing Derived Class Instances as void* to Generic Callbacks in C++
This is a bit of an involved problem, so I'll do the best I can to explain what's going on. If I miss something, please tell me so I can clarify.
We have a callback system where on one side a module or application provides a "Service" and clients can perform actions with this Service (A very rudimentary IPC, basically). For future reference let's say we have some definitions like so:
This works fine for basic types such as structs or builtins.
We have an MI structure a bit like this:
The provider may be anything from a hardware driver to a bit of glue that handles disk images. The point is that classes inherit Disk.
We have a "service" which is to be notified of all new Disks in the system, and this is where things unravel:
The problem is, SomeDiskProvider inherits Disk, but the callback handler can't receive that type (as the callback function pointer must be generic).
Could RTTI and templates help here?
Any suggestions would be greatly appreciated.
c++ - 识别类型
在我的应用程序中,有一个继承层次结构,其中只有位于继承链末端的类是非抽象类。还有一些 boost::variant 的用法。我想编写一个函数,它接受一个指针和一个类型,并说明对象是否属于该类型。
例如
现在,如果有一个 boost 变体,我想知道 boost 变体是否存储了该特定类型。有人可以帮我吗?我不想添加额外的参数来确定它是否是变体。即使是为了找出抽象性,我也在使用 boost::is_abstract..
谢谢,戈库尔。
c++ - C++ 中的 RTTI 和可移植性
如果编译器不“支持”RTTI,这是否意味着编译器无法处理其中包含虚函数的类层次结构?还是我误解了有关 RTTI 不便携的文献,而问题出在其他地方?
谢谢大家的意见!
c# - C# 应用程序中的 C++ lib RTTI
我正在用 C# 开发使用 c++ lib 文件的游戏编辑器。我想要 C# 中 C++ 类的 RTTI。是否可以在 C# 中获得 C++ 类的 RTTI?如果是怎么办?
delphi - 变体记录的 Rtti
我尝试使用 Delphi 2010 编写一种对象/记录序列化程序,并想知道是否有一种方法可以检测记录是否是变体记录。例如 Types.pas 中定义的 TRect 记录:
由于我的序列化程序应该在我的数据结构上递归地工作,它将下降到 TPoint 记录并在我的序列化文件中生成冗余信息。有没有办法通过获取记录中的详细信息来避免这种情况?
delphi - Delphi 2010 中的 Rtti 数据操作和一致性
有谁知道,我如何使用对原始数据的引用来制作 TValue ?在我的序列化项目中,我使用(如XML-Serialization中所建议的)一个通用序列化程序,它将 TValues 存储在内部树结构中(类似于示例中的 MemberMap)。
此成员树还应该用于创建动态设置表单和操作数据。我的想法是为数据定义一个属性:
GetData、SetData 方法的实现:
不幸的是,TValue.From 方法总是复制原始数据。因此,每当应用程序更改数据时,DataModel 都不会更新,反之亦然,如果我以动态形式更改 DataModel,原始数据不会受到影响。当然,我总是可以在更改任何内容之前和之后使用 Data 属性,但是由于我在 DataModel 中使用了很多 Rtti,我真的不想在任何时候这样做。
也许有人有更好的建议?
delphi - Rtti 访问复杂数据结构中的字段和属性
正如在 Delphi 2010 中的 Rtti 数据操作和一致性中已经讨论过的,原始数据和 rtti 值之间的一致性可以通过使用一对 TRttiField 和一个实例指针访问成员来实现。如果一个简单的类只有基本成员类型(例如整数或字符串),这将非常容易。但是如果我们有结构化的字段类型呢?
这是一个例子:
为了方便访问成员,我想构建一个成员节点树,它提供了一个用于获取和设置值、获取属性、序列化/反序列化值等的接口。
所以最重要的是获取/设置值,如前所述,通过使用 TRttiField 的 GetValue 和 SetValue 函数来完成。
那么 FPoint 成员的 Instance 是什么?假设 Parent 是 TExample 类的节点,其中实例是已知的并且成员是字段,那么 Instance 将是:
但是如果我想知道记录属性的实例怎么办?在这种情况下没有偏移量。那么有没有更好的解决方案来获取指向数据的指针?
对于 FAnotherClass 成员,Instance 将是:
到目前为止,该解决方案有效,并且可以使用 rtti 或原始类型完成数据操作,而不会丢失信息。
但是,当使用数组时,事情变得更加困难。特别是第二个Points数组。在这种情况下,如何获取点成员的实例?