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 に答える