考慮下面的代碼沒有法律轉換:錯誤C2663: '的std :: _哈希<_Traits> ::插入':3個重載有this指針
#include <unordered_map>
struct A {};
struct T
{
std::unordered_map<std::string, A> _map;
};
struct L
{
std::shared_ptr<const T> _c;
};
class f {
void oid (std::shared_ptr<L> l, std::string st, A a) {
l->_c->_map.insert(std::make_pair(st,a));
}
};
在編譯過程中,它會引發以下錯誤:
error C2663: 'std::_Hash<_Traits>::insert' : 3 overloads have no legal conversion for 'this' pointer with [ _Traits=std::tr1::_Umap_traits,std::equal_to>,std::allocator>,false> ]
我tryed以去除std::shared_ptr<const T> _c;
(不,我認爲它很重要),但它構建了一些其他錯誤const
...
謝謝你的他LP!
如果您嘗試刪除*實際上很重要的'const',那麼錯誤是什麼? – 2012-03-14 16:22:31