Per favore qualcuno può spiegare perché il seguente codice non viene compilato usando clang 3.5.Errore di compilazione associato al vettore di const std :: string
L'errore riportato è "No sovraccarico" = "nell'algoritmo".
std::vector<const std::string> m_messages;
std::vector<const std::string>::iterator iter;
...
if (iter != m_messages.end())
{
m_messages.erase(iter); // compilation error
}
Se io dichiaro m_messages
come: std::vector<std::string> m_messages;
allora compila OK.
Inoltre, qual è la differenza tra:
std::vector<const std::string> m_messages;
e
std::vector<std::string> m_messages;
TIA.
Vuol dire che non ha senso avere un vettore di const stringhe se gli elementi possono essere rimossi? – ksl
Non sono abbastanza sicuro di essere abbastanza esperto per confermare questo, ma con il modo in cui il vettore è implementato, sembra così .. ma ha certamente senso avere un contenitore che supporti questo (ad esempio tramite distruttore + costruttore di copie). forse c'è qualcosa nella libreria boost? –
OK, grazie. Forse farò una domanda separata relativa a ciò in particolare se non avrò una risposta qui. – ksl