【发布时间】:2023-03-18 06:37:02
【问题描述】:
为什么编译失败:
std::wstring timeString();
if (sysTime->wHour < 10) timeString.append(L"hi");
但是一旦我把第一行改成这样:
std::wstring timeString(L"some text");
有效吗?
【问题讨论】:
为什么编译失败:
std::wstring timeString();
if (sysTime->wHour < 10) timeString.append(L"hi");
但是一旦我把第一行改成这样:
std::wstring timeString(L"some text");
有效吗?
【问题讨论】:
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!
希望对您有所帮助。
【讨论】:
替换:
std::wstring timeString();
与:
std::wstring timeString;
【讨论】: