これがコンパイルに失敗する理由:
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;