为什么无法编译:
std::wstring timeString();
if (sysTime->wHour < 10) timeString.append(L"hi");
但是,一旦我将第一行改为这样:
std::wstring timeString(L"some text");
有效吗?
答案 0 :(得分:5)
std::wstring timeString();
这是一个函数声明,而不是对象声明。仔细看看:函数名称为timeString
,不带参数,返回std::wstring
。
只需写下:
std::wstring timeString;
这应该足够了。
只有您更喜欢C ++ 11的统一初始化语法,才能避免这种意外错误:
std::wstring timeString { L"some text" }; //object!
std::wstring timeString { }; //object, not function declaration!
希望有所帮助。
答案 1 :(得分:1)
替换:
std::wstring timeString();
使用:
std::wstring timeString;