Salve a tutti, scusate il titolo, ma non saprei proprio come intitolare il problema. Spero di non richiedere cosa già chieste... premetto ho cercato su google e anche nel forum, ma non ho trovato nessuna soluzione![]()
Ad ogni modo ho questo codice
se provo a inserire così qualcosa ottengo questo dal compilatore:codice:std::map<std::string, IUIWidget*> __m_Widgets; // Questo è nel'header :3 void CUI::AttachWidget( IUIWidget* widget ) { __m_Widgets.insert( std::make_pair(widget->GetID(), widget) ); // Errore qui! }
Il problema è essenzialmente che non riesco a inizializzare il pair della map, perchè il primo valore, quello della chiave è per forza const...codice:6>c:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(216): error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const std::string' (or there is no acceptable conversion) 6> c:\Program Files\Microsoft Visual Studio 10.0\VC\include\xstring(707): could be 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(std::basic_string<_Elem,_Traits,_Ax> &&)' 6> with 6> [ 6> _Elem=char, 6> _Traits=std::char_traits<char>, 6> _Ax=std::allocator<char> 6> ] 6> c:\Program Files\Microsoft Visual Studio 10.0\VC\include\xstring(762): or 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const std::basic_string<_Elem,_Traits,_Ax> &)' 6> with 6> [ 6> _Elem=char, 6> _Traits=std::char_traits<char>, 6> _Ax=std::allocator<char> 6> ] 6> c:\Program Files\Microsoft Visual Studio 10.0\VC\include\xstring(767): or 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(const _Elem *)' 6> with 6> [ 6> _Elem=char, 6> _Traits=std::char_traits<char>, 6> _Ax=std::allocator<char> 6> ] 6> c:\Program Files\Microsoft Visual Studio 10.0\VC\include\xstring(772): or 'std::basic_string<_Elem,_Traits,_Ax> &std::basic_string<_Elem,_Traits,_Ax>::operator =(_Elem)' 6> with 6> [ 6> _Elem=char, 6> _Traits=std::char_traits<char>, 6> _Ax=std::allocator<char> 6> ] 6> while trying to match the argument list '(const std::string, const std::string)' 6> c:\Program Files\Microsoft Visual Studio 10.0\VC\include\utility(215) : while compiling class template member function 'std::pair<_Ty1,_Ty2> &std::pair<_Ty1,_Ty2>::operator =(const std::pair<_Ty1,_Ty2> &)' 6> with 6> [ 6> _Ty1=const std::string, 6> _Ty2=ProtonEngine::IUIWidget * 6> ] 6> ..\..\Source\Engine\UI.cpp(15) : see reference to class template instantiation 'std::pair<_Ty1,_Ty2>' being compiled 6> with 6> [ 6> _Ty1=const std::string, 6> _Ty2=ProtonEngine::IUIWidget * 6> ]
Ora la cosa che mi manda ai pazzi è che un codice identico, ma in un'altra classe, funziona alla perfezione... Che cosa potrebbe essere? Come posso risolverlo? grazie mille in anticipo ;-)

Rispondi quotando