少し前に、Boost.Extension の例で遊んでいました。彼らは使用した
std::map<std::string, factory<computer> > computers;
computers.swap(types.get());
しかし、プロジェクトを bjam から premake から Visual Studio プロジェクト 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