J'ai la ligne suivante de code qui fonctionne très bien:Impossible de déduire automatiquement const &
const auto& dict = m_DictionaryAbbreviationsAndEnglish.Content;
Maintenant, je voulais introduire un « if-then » clause, mais le compilateur me dit « ne peut pas en déduire type 'auto' (initalizer obligatoire):
const auto& dict;
if (uSkipAbbreviationsAndEnglish)
{
dict = m_DictionaryNoAbbreviationsNoEnglish.Content();
}
else
{
dict = m_DictionaryAbbreviationsAndEnglish.Content();
}
Cependant, quand je l'initialisons comme ça ...
const auto& dict=NULL;
..., je suis incapable d'assigner « dic t » en utilisant ce code:
dict = m_DictionaryNoAbbreviationsNoEnglish.Content();
L'erreur est "l'expression doit être une lValue modifiable"
Quelqu'un peut-il me dire comment faire cela correctement.?
Merci.
ps: Le contenu est le suivant:
map<wstring,wstring> &clsTranslations::Content()
{
return m_content;
}
Ne pas utiliser 'auto' ici, il est probablement pas la peine. – DeiDei
Vous ne pouvez pas réaffecter une référence. Jetez un oeil à [ici] (http://stackoverflow.com/questions/728233/why-are-references-not-reseatable-in-c). – Shibli
Les constantes doivent être initialisées – Sniper