我有以下代码行,效果很好:
const auto& dict = m_DictionaryAbbreviationsAndEnglish.Content;
现在我想介绍一个“if-then”子句,但是编译器告诉我“不能推断'auto'类型(需要使用initalizer):
const auto& dict;
if (uSkipAbbreviationsAndEnglish)
{
dict = m_DictionaryNoAbbreviationsNoEnglish.Content();
}
else
{
dict = m_DictionaryAbbreviationsAndEnglish.Content();
}
然而,当我像这样初始化它时......
const auto& dict=NULL;
...,我无法使用此类代码分配“dict”:
dict = m_DictionaryNoAbbreviationsNoEnglish.Content();
错误是“表达式必须是可修改的lValue。”
有人可以告诉我如何正确地做到这一点吗?
谢谢。
ps:内容是这样的:
map<wstring,wstring> &clsTranslations::Content()
{
return m_content;
}
答案 0 :(得分:6)
这就是条件运算符的用途:
const auto& dict = uSkipAbbreviationsAndEnglish ?
m_DictionaryNoAbbreviationsNoEnglish.Content() :
m_DictionaryAbbreviationsAndEnglish.Content();