type_info 指针可以用来区分 C++ 中的类型吗?
我有一组多态 C++ 类,它们都由同一模块(Windows DLL)实例化。现在有两个指向此类的指针并调用了 typeid: SomeCommonBase* first = ...; //valid p…
使用 RTTI 确定 C++ 中的继承图?
如果有的话,C++ 结构有哪些用于在运行时列出类的祖先? 基本上,我有一个类,它存储指向任何对象的指针,包括可能的原始类型(有点像 boost::any ,…
相同的 type_info 地址意味着相同的类型吗?
我正在对用于识别对象类型的代码进行微优化。我假设我可以使用以下内容来检查在同一模块中实例化的两个对象是否具有相同的类型: SomeCommonBase& fir…
typeid 运算符返回的对象的生命周期是多少?
如果我调用 typeid 并检索返回的 type_info 的地址: const type_info* info = &( typeid( Something ) ); typeid 返回的对象的生命周期是多少以及指…
C++将基指针转换为接口指针
这是我的设置的一些伪代码: class IMyClass { ... }; // pure virtual class class CMyBaseClass { .... }; class CMyClass : public CMyBaseClass, …
如何在 Visual Studio 2008 中关闭 RTTI
我不确定其他版本,但是,在 VS 2008 中,即使禁用了 RTTI,我也可以通过在类型上调用 typeid(T).name() 来查询信息。它适用于所有类型,包括内部类型…
如何解决 Delphi XE 中大型 Enum 类型的 RTTI 大小问题?
当我尝试在 Delphi XE 中编译具有 5000 多个值的 Enum 类型的单元时,出现此错误 [DCC 错误] uCities.pas(5834): E2575 RTTI for 'TCity' is太大;使…
如何释放嵌套(对象类型)字段类?
TBaseClass = class public destructor Destroy; override; end; TFirstClass = class(TBaseClass) FMyProp: string; end; TSecondClass = class(TBas…
std::map、多态和删除
我在使用 C++ 映射存储指向基类和某些派生类的指针时遇到问题。 让我用一个相当长但简单的代码来解释: #include #include struct foo{ int dummy[4];…
有没有办法在知道字段名称和值的情况下更新记录中的字段
给定一条记录: MyRecord = record Company: string; Address: string; NumberOfEmplyees: integer; 您能否编写一个函数调用, function UpdateField(…
RTTI TRttiMethod.Invoke、stdcall 和 const 参数的错误
我对 RTTI TRttiMethod.Invoke、stdcall 和 const 参数有问题: obj := TClassRecordTest.Create; try b.a := 10; b.b := 100; a.a := 1; a.b := 2; w…
C++双重调度“可扩展”无 RTTI
有谁知道在 C++ 中正确处理双重调度的方法而不使用 RTTI 和dynamic_cast<>还有一个解决方案,其中类层次结构是可扩展的,即基类可以进一步派生,并且…
在运行时构建数据/类/rtti树
使用 Visual Studio,您可以将鼠标放在变量上,该变量将弹出带有成员和节点名称的 [classname]。您可以查看对象树,查看它们拥有什么值,等等。 有没…