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
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!
}
se provo a inserire così qualcosa ottengo questo dal compilatore:
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> ]
Il problema è essenzialmente che non riesco a inizializzare il pair della map, perchè il primo valore, quello della chiave è per forza const...
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 ;-)