所以前段时间我在玩 Boost.Extension 例子。他们用
std::map<std::string, factory<computer> > computers;
computers.swap(types.get());
但是当我开始将项目从 bjam 移植到 premake 到 Visual Studio Project 2008时,我发现我不能使用他们用于创建地图的方法。我总是在那一行得到编译器错误 C2512(实际上在Boost.Extension type_map.hpp 内的第 74 行)。所以我使用了创建地图链接的方法:
map<string, factory<computer> >& computers(types.get());
(他们在一些教程中使用过)并且全部编译。我对 C++ 很陌生,可能不太了解。
那么在这种情况下和一般情况下,从链接创建地图与简单创建地图有什么区别?
更新 - 完整的错误消息
错误 1 错误 C2512: boost::extensions::basic_type_map::type_map_convertible::type_holder: 没有合适的默认构造函数可用 c:\users\avesta\downloads\extension-svn-source\boost\extension\type_map.hpp 74 Mltiple-Inheritance