0
 int len = GetWindowTextLengthW(hwndEdit) + 1;
 wchar_t text[len];

私は得る

エラー 2 エラー C2466: 定数サイズ 0 の配列を割り当てることができません
エラー 3 エラー C2133: 'テキスト': 不明なサイズ
エラー 1 エラー C2057: 定数式が必要です

GetWindowTextLengthW(hwndEdit) + 1 > 0 であるため、コンパイルできない理由がわかりません

null+1 = 1って本当じゃない?

4

4 に答える 4

5

あなたが望むのは、メモリ管理を気にする必要がないことですよね? そのため、静的に割り当てられた配列を選択しました。

newはい、ここでの回答が推奨するように使用できますが、次をお勧めします。

std::vector< wchar_t > text;

于 2013-01-06T20:54:24.800 に答える
3

まず、静的サイズの配列を宣言する構文を使用していますが、実行時に評価されるサイズ変数を渡しています。これがコンパイルされない理由です。

第 2 に、サイズ 0 の配列を静的に割り当てることはできませんが、これは別の問題です (ただしstd::array、それを行うことはできます)。

代わりに動的割り当てを使用する必要があると思います。

wchar_t* text = new wchar_t[len]

またはさらに良い場合は、std::wstringまたはを使用しますstd::vector<wchar_t >

于 2013-01-06T20:52:05.187 に答える
0

試す:

wchar_t* text = new wchar_t[len];
于 2013-01-06T20:52:33.020 に答える
0

非定数値の代わりにゼロについて不平を言うエラー メッセージが紛らわしいのは事実です (一部のコンパイラが未定義の型に対して int について不平を言うように)。VLA は C99 の機能であり、一部の C++ コンパイラの拡張機能としてのみ存在します (別の名前で C++14 に部分的に追加される予定です)。MSVC で最も近いもの (スタックに割り当て、割り当て解除関数を呼び出さない) は _alloca です。

于 2013-01-06T21:00:50.550 に答える