2017-03-19 76 views
2

我的代碼的偉大工程的下面一行:不能推斷常量汽車及

const auto& dict = m_DictionaryAbbreviationsAndEnglish.Content; 

現在我想介紹的「如果 - 那麼」條款,但是編譯器告訴我「無法演繹'自動' 型(initalizer要求):

const auto& dict; 

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

然而,當我初始化它像這樣...

const auto& dict=NULL; 

...,我無法分配「DIC T」使用這樣的代碼:

dict = m_DictionaryNoAbbreviationsNoEnglish.Content(); 

的錯誤是‘表達一定要修改的左值’

可有人告訴我如何正確地做到這一點?

謝謝。

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();