5

なぜこれが機能しないのですか?

enum : long {MaxValue = std::numeric_limits<long int>::max()};

エラーが発生しました:エラー1エラーC2057:期待される定数式
それについて定数ではないものは何ですか?long intの制限はコンパイル時にわかっているので、何が問題なのでしょうか。

4

3 に答える 3

5

問題は、std::numeric_limits<long int>::max()関数は定数値を返しますが、実行時に呼び出され、コンパイル時に定数値が必要になることです。

LONG_MAXおそらく、代わりに値を使用できますか( climitsヘッダーを参照)?

于 2010-11-24T12:24:38.030 に答える
3

他の人が言ったように、あなたは定数式が必要です(関数は修飾されません)。最終的に、C ++ 1xは、関数を含む幅広い定数式をサポートするようになります。n2235およびBjarneStroustrupのFAQエントリを参照してください。

于 2010-11-24T12:28:50.307 に答える
1

はい。ただし、コンパイル時に関数を実行することはできません。max()

于 2010-11-24T12:24:58.743 に答える