2016-12-01 4 views
0

スタック上にダイナミックサイズの配列を作成しようとしています。 私は次のコードを持っていますビジュアルスタジオでC++ 14を有効にする2015 cmake

int length = 0; 
getLength(&someVar, &length); 

char infoLog[length]; 

私はそれをすることができません。 私はもともとmacOSでコードを開発しましたが、コンパイルには問題ありませんでした。 私はいくつかの研究を行い、C++ 14がこれをサポートしていることを知っていましたが、CMake(またはVS2015コミュニティ版)でそれを有効にする方法がわかりません。

おかげ

EDIT:drescherjmは、それが実際に仕様に追加されなかったことが示された通り。下の答えに従ってそれをしました。

+1

*** C++ 14はこれをサポートしています***私はかなり間違っていると確信しています。 https://www.reddit.com/r/cpp_questions/comments/3clm34/why_was_n3639_runtimesized_arrays_with_automatic/ – drescherjm

答えて

3

いいえ、C++ 14ではサポートされていません。

代わりに動的なコンテナを使用してみてください:

std::vector<char> infoLog(length); 

あなたが作成した後のサイズ変更できるようにしたくない場合(VLAがないので)、その後、

auto infoLog = std::make_unique<char[]>(length); 

の両方がヒープを使用します。コンテンツを格納するスペース、変数infoLogがスコープを離れると自動的に解放されます。

関連する問題