3

为什么编译失败:

std::wstring timeString();
if (sysTime->wHour < 10) timeString.append(L"hi");

但是一旦我将第一行更改为这样:

std::wstring timeString(L"some text");

有用?

4

2 回答 2

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!

希望有帮助。

于 2013-08-11T12:37:26.153 回答
1

代替:

std::wstring timeString();

和:

std::wstring timeString;
于 2013-08-11T12:39:16.487 回答