C++ wstring构造函数

Xen*_*ate 3 c++ wstring

为什么这不能编译:

std::wstring timeString();
if (sysTime->wHour < 10) timeString.append(L"hi");
Run Code Online (Sandbox Code Playgroud)

但是,一旦我改变第一行是这样的:

std::wstring timeString(L"some text");
Run Code Online (Sandbox Code Playgroud)

有用?

Naw*_*waz 5

std::wstring timeString();
Run Code Online (Sandbox Code Playgroud)

这是一个函数声明,而不是对象声明.仔细看看:函数名称timeString不带参数,然后返回std::wstring.

写吧:

std::wstring timeString;
Run Code Online (Sandbox Code Playgroud)

那应该够了.

只有您更喜欢C++ 11的统一初始化语法,才能避免这种意外错误:

std::wstring timeString { L"some text" };  //object!

std::wstring timeString { };  //object, not function declaration!
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.