2017-03-19 9 views
2

を推測することはできません:は、私は素晴らしい作品次のコード行を持っているのconstオート&

const auto& dict = m_DictionaryAbbreviationsAndEnglish.Content; 

は、今私は、「IF-THEN」句を紹介したかったが、コンパイラは、「推測することはできませんと言われます[自動](必須initalizer)タイプ:

const auto& dict; 

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

しかし、私はこのようにそれを初期化...

const auto& dict=NULL; 

...、私は「DICを割り当てることができませんよ。「このようなコードを使用して:

dict = m_DictionaryNoAbbreviationsNoEnglish.Content(); 

エラーがある 『T式は修正可能な左辺値でなければならない』

は、誰もがこれを正しく行う方法を教えてもらえますか?

ありがとうございます。

PS:

条件演算子が何のためにあるのかである
map<wstring,wstring> &clsTranslations::Content() 
{ 
    return m_content; 
} 
+0

がここに 'auto'を使用しないでください、それはおそらくそれだけの価値はないの内容はこれです。 – DeiDei

+1

参照を再割り当てすることはできません。 [ここ](http://stackoverflow.com/questions/728233/why-are-references-not-reseatable-in-c)を見てください。 – Shibli

+0

定数を初期化する必要があります – Sniper

答えて

6

const auto& dict = uSkipAbbreviationsAndEnglish ? 
        m_DictionaryNoAbbreviationsNoEnglish.Content() : 
        m_DictionaryAbbreviationsAndEnglish.Content(); 
関連する問題