c++ - type_info 的包装类

标签 c++ typeid typeinfo

所以,我发现了这个关于 C++ 事件的非常好的教程:

http://www.gamedev.net/page/resources/_/technical/game-programming/effective-event-handling-in-c-r2459

但是:创建者对 typeid 返回的 type_info 使用了一个包装器。据我了解,由于 type_info 的 = 运算符不可访问,这是不可能的。因此,我无法编译他提供的代码。不幸的是,这也是他的教程工作方式的核心部分。现在,我将如何解决这个问题,我应该只使用 type_info.hash_code - 这是否可以单独识别一个类?或者我不明白他在这种情况下所说的“包装器”是什么意思?

最佳答案

唯一提到的type_info在那个页面上是

TypeInfo is a simple wrapper around type_info class that lets us store it as a key in std::map.

C++11 有 std::type_index<typeindex>这正是这个角色。一般元素a map不需要可赋值,也不需要从 C++11 开始可复制,但是 type_info仍然不能直接使用,因为除了 typeid 之外,您根本无法构造一个表达。

std::type_index 的规范注意它可能包含指向 std::type_info 的指针以简化实现。 “包装器”并不意味着继承或直接成员资格。

通过引用包装的类也称为代理。

关于c++ - type_info 的包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20108895/

相关文章:

c++ - 是否有用于标准化类型名称字符串格式的 C++ type_info 的可移植包装器?

c - 变量的类型是否存储在某处?它在哪里?

c++将大文本文件读取为字符串(大于string::max_size)

c++ - 无法与另一个项目共享头文件

c++ - InitializeCriticalSectionEx 不在 KERNEL32.Dll 中

c++ - 多态指针的typeid?

C++ 编译错误 : "Double array redeclared as different kind of symbol"

c++ - typeid 运算符忽略 cv 限定符背后的基本原理是什么

c++ - typeid() 在 g++ 中返回额外的字符

存储 type_info 对象的 C++ 方法不起作用