2017-03-19 4 views
2

Ich habe die folgende Codezeile, die großen Werke:Kann nicht ableiten konst auto &

const auto& dict = m_DictionaryAbbreviationsAndEnglish.Content; 

Nun wollte ich eine „if-then-Klausel“ einzuführen, aber der Compiler sagt mir, „Kann nicht ableiten 'auto' Typ (initalizer erforderlich):

const auto& dict; 

if (uSkipAbbreviationsAndEnglish) 
{ 
    dict = m_DictionaryNoAbbreviationsNoEnglish.Content(); 
} 
else 
{ 
    dict = m_DictionaryAbbreviationsAndEnglish.Content(); 
} 

Allerdings, wenn ich es so initialisieren ...

const auto& dict=NULL; 

..., ich bin nicht in der Lage „dic zuweisen t“solchen Code verwendet:

dict = m_DictionaryNoAbbreviationsNoEnglish.Content(); 

Der Fehler ist‚Expression muss ein modifizierbar lValue seine‘

Kann mir jemand sagen, wie dies richtig zu tun.?

Vielen Dank.

ps: Content ist dies:

map<wstring,wstring> &clsTranslations::Content() 
{ 
    return m_content; 
} 
+0

nicht 'auto' hier nicht verwenden, es ist wahrscheinlich nicht wert. – DeiDei

+1

Sie können eine Referenz nicht neu zuweisen. Werfen Sie einen Blick auf [hier] (http://stackoverflow.com/questions/728233/why-are-references-not-reseatable-in-c). – Shibli

+0

Konstanten müssen initialisiert werden – Sniper

Antwort

6

Das ist, was der Bedingungsoperator ist für:

const auto& dict = uSkipAbbreviationsAndEnglish ? 
        m_DictionaryNoAbbreviationsNoEnglish.Content() : 
        m_DictionaryAbbreviationsAndEnglish.Content(); 
Verwandte Themen