我正在用实体组件系统编写游戏。我的实体管理器将组件存储在2D地图中,如下所示:
map<const type_info*, vector<shared_ptr<Component>> > components;
每个组件都有自己的序列化函数,但抽象基类除外,因为它没有可保存的变量。我正在使用boost来尝试保存/加载管理器。我得到两个错误:
error C2039: 'serialize' : is not a member of 'type_info' f:\boost\boost\serialization\access.hpp 116
error C2512: 'type_info' : no appropriate default constructor available f:\boost\boost\serialization\access.hpp 130
当我得到这样的错误时,我只是包含necesseray序列化标题,而boost中有四个带有type_info的标题,但它们都不起作用。 (&lt; - 那是我的提升专家,尝试导入任何带有type_info的标题)
实体管理器的序列化功能如下所示:
template<class A> void serialize(A& arc, const unsigned int version){
arc & /* other vars */ & components;
};
免责声明:我前一天才开始使用提升,所以我不知道是否/如何在脚下射击自己。