0

所以,我发现了这个关于 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 - 这是否可以单独识别一个类?还是我不明白他在这种情况下所说的“包装器”是什么意思?

4

2 回答 2

2

该页面上唯一提到的type_info

TypeInfo 是 type_info 类的简单包装器,让我们可以将它作为键存储在 std::map 中。

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

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

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

于 2013-11-20T23:04:26.027 回答
0

关于这篇确切的文章,我问了自己同样的问题,但后来我意识到应该提供代码清单,而且确实如此。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;
};
于 2014-02-27T00:56:56.630 回答