rtti相关内容
我需要知道TCL中一些变量的数据类型。例如,有三个变量: set a 10 set b { I love Tcl } set c "Hello" 假设我对他们的类型一无所知。但我需要知道这一点,才能进一步推进我的工作。那么,我如何才能确定-在上面的示例中- a为整数 b是一个列表 c是字符串 推荐答案 Tcl的变量根本没有数据类型。所有这些值都可以包含任何值。
..
我有一个这样的项目: |--CMakeLists.txt(1) |--File1.cpp -W -W-all |--Folder1 |--CMakeLists.txt(2) |--File2.cpp -W -W-all -fno-rtti 正如您在上面看到的,File2.cpp需要用-fno-rtti编译,而其他文件应该用rtti编译。之所以会发生这种情况,是因为我在项目
..
当我运行这个main.cpp时怎么会: #include #include 使用命名空间标准;结构布拉赫{};int main() {cout 通过使用 GCC 版本 4.4.4 编译它: g++ main.cpp 我明白了: 4Blah 在 Visual C++ 2008 上,我会得到: struct Blah 有没有办法让它只打印 Blah 或
..
..
Andrei Alexandrescu 在 现代C++设计: typeid 返回的对象有静态存储,所以你不必担心终身问题. 安德烈继续: 标准不保证每次调用,比如说,typeid(int)返回相同的引用type_info 对象. 虽然标准不保证这一点,但在 GCC 和 Visual Studio 等常见编译器中是如何实现的? 假设 typeid 没有泄漏(并且每次调用
..
如果我想使用 std::any 我可以在关闭 RTTI 的情况下使用它.以下示例也使用 -fno-rtti 和 gcc 按预期编译和运行. int main(){std::any x;x=9.9;std::cout (x)
..
我们经常听到/读到应该避免动态转换.我想知道根据你的说法,什么是它的“好用"示例? 编辑: 是的,我知道其他线程:它是确实在阅读我提出问题的第一个答案时! 解决方案 这个最近的主题给出了一个它可以派上用场的例子.有一个基本的 Shape 类和从它派生的类 Circle 和 Rectangle .在测试相等性时,很明显圆形不能等于矩形,尝试比较它们将是一场灾难.在遍历指向 Sha
..
为什么我运行这个main.cpp: #include #include 使用命名空间标准;结构废话{};int main() {cout
..
我发现了一个 关于 Delphi 中新 RTTI 的很好解释,但我不明白我读过的所有内容中的一件重要事情 - 我在哪里可以使用它? 它应该取代什么? 解决方案 扩展的 RTTI 的工作方式类似于 .NET 中的反射.它使您可以访问内部应用程序结构信息.您可以在运行时访问类属性、方法等,在一定程度上您以前无法做到. 一些使用方法: 将类序列化/反序列化为 XML 或其他媒体
..
我听说了很多关于新的/改进的 Delphi 2010 的 RTTI 功能,但我必须承认我的无知……我不明白.我知道 Delphi 的每个版本都支持 RTTI……而且我知道 RTTI(运行时类型信息)允许我在应用程序运行时访问类型信息. 但这究竟意味着什么?Delphi 2010 的 RTTI 是否支持与 反射在 .NET 中相同的东西? 有人可以解释一下为什么 RTTI 有用吗?假装我
..
我最近使用了 delphi xe,但由于 rtti(我认为),exe 的大小非常大 如何删除 rtti ,我可以在不压缩的情况下使我的应用程序大小与 delphi 2009 应用程序 (490 kb) 一样小吗?以及rtti有什么用 解决方案 简而言之(完整故事由初始答案中的链接提供): {$RTTI 显式方法([]) 属性([]) 字段([])} 请注意,从 XE6 开
..
想象一下,你想分配你自己的事件过程: procedure TSuperObject.DoSomething(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);开始ShowMessage('是的,我在做');结尾; 到窗体上的任何 TWinControl.通常,如果表单上有 Panel1 (TPan
..
我已经声明了以下枚举类型,我希望第一个成员的序号值为 1(一)而不是通常的 0(零): 类型TMyEnum = (meFirstValue = 1,我的第二个值,第三值); 如果我调用 TypeInfo(),例如作为对 GetEnumName() 调用的一部分,我收到一个编译器错误: GetEnumName(TypeInfo(TMyEnum), Ord(aValue)); 错误:“E2
..
虽然我很怀疑,但我很好奇是否可以从现有类型中提取原始类型模板参数,也许使用 RTTI. 例如: typedef std::bitset词集; 是否可以在不将其硬编码到其他地方的情况下提取上述代码中的数字 16?欢迎使用特定于编译器的实现,但我对 g++ 特别感兴趣. 解决方案 通常不可能选择任意模板参数. 但是,通常的做法是这样的: template结构 foo {静态常
..
我知道使用 RTTI 会影响资源,但影响有多大?我看过的所有地方都只是说“RTTI 很贵",但实际上没有一个提供任何基准或定量数据来保护内存、处理器时间或速度. 那么,RTTI 有多贵?我可能会在只有 4MB 内存的嵌入式系统上使用它,所以每一位都很重要. 编辑:根据 S. Lott 的回答,这样会更好如果我包括我实际在做的事情.我正在使用一个类来传递不同长度的数据并且可以执行不同的操
..
我有一个问题.我是来自 Delphi 2010 的运行时类型信息的新手.我需要将长度设置为动态数组到 TValue 中.你可以看到代码. Type TMyArray = 整数数组;TMyClass = 班级发表函数 Do:TMyArray;结尾;函数 TMyClass.Do:TMyArray;开始设置长度(结果,5);对于 i:=0 到 4 Result[i]=3;结尾;............
..
由此(RTTI 有多贵?),似乎很明显动态转换是比静态类型比较昂贵得多,但我想知道在编译器选项(VS2010,/GR-)中关闭 RTTI 选项是否值得 我的代码中没有动态转换(我用静态转换替换了它们).但是 (/GR-) 选项在使用动态转换时除了发出错误之外还有其他作用吗?里面有没有内存或代码优化? 提前致谢. 解决方案 Straight 来自MSDN(强调我的): 当/
..
这个问题专门针对不可移植的 MSVC ABI 内容. 我正在尝试用明显不可移植但不神奇的 C++ 编写 C++ 的 typeid 等价物.对于 Itanium ABI(在 Linux/Mac 上使用),这非常简单: const std::type_info&dynamicast_typeid(void *mdo){std::type_info **vptr = *reinterpret_c
..
我的问题是如何在运行时加载类信息? 当有人调用 instanceof 时,这被认为是 RTTI 还是反射?还是看实际情况? 解决方案 术语“RTTI" 是一个特定于 C++ 的术语,指的是核心语言的功能,它允许程序在运行时确定各种对象的动态类型.它通常指的是 dynamic_cast 或 typeid 运算符,以及由 typeid 生成的关联 std::type_info 对象.
..
我发现自己使用了一种常见的运行时类型识别模式,尤其是在编写处理不同类型控件的代码时.这是模式: if (ctrl is ControlTypeEtc)(ctrl as ControlTypeEtc).SomeMethod(); 我这样做是为了避免在 as 运算符返回 NULL 的情况下必须进行 NULL 检查.有没有办法将其简化为单个操作? 解决方案 没有办法在一次操作中做到这一点.
..