type_info的包装器类

Wrapper class for type_info

本文关键字:包装 info type      更新时间:2023-10-16

所以,我发现了这个关于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是一个围绕type_info类的简单包装器,使我们可以将其作为关键字存储在std::map中。

C++11在CCD_ 3中具有CCD_ 2。一般来说,map的元素不需要可赋值,也不需要像C++11那样可复制,但type_info仍然不能直接使用,因为除了typeid表达式之外,根本无法构造元素。

std::type_index的规范指出,它可以包含指向std::type_info的指针以简化实现。"Wrapper"并不意味着继承或直接成员身份。

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

关于这篇文章,我问了自己同样的问题,但后来我意识到应该提供代码列表,事实确实如此。所以TypeInfo是一个简单的type_info的包装器。

class TypeInfo{
public:
    explicit TypeInfo(const type_info& info) : _typeInfo(info) {};
    bool operator < (const TypeInfo& rhs) const{
        return _typeInfo.before(rhs._typeInfo) != 0;
    }
private:
    const type_info& _typeInfo;
};