10

実行時に変化しない定数値がありますが、実行時まで知ることはできません。

定数を定義せずに(クラスのメンバーとして、またはそうでなくても)宣言し、計算された値を一度(そして一度だけ)割り当てる方法はありますか?または、非 const 宣言に頼って、コーディング S & P (ALL_CAPS変数名、staticクラス内の場合の宣言など) を使用して、それが変更されないようにする必要がありますか?

説明:

これらは良い答えですが、実際の状況はもっと複雑です。

プログラムには、処理とレンダリングの間で継続的に実行されるメイン ループがあります。ユーザーは必要なオプションを設定できます。一度設定すると、プログラムが再起動されるまで変更されません。「初期化」関数は、メイン ループの前に決定できるものに対して設定されますが、ユーザーの操作に依存する値は、処理フェーズのループの途中で実行する必要があります。(現時点では、永続的なデータ ストレージ技術が思い浮かびます...)

4

4 に答える 4

10

このようなもの?

const int x = calcConstant();

クラスメンバーの場合は、Yuushiの回答のように、コンストラクターの初期化リストを使用してください。

于 2013-01-03T01:28:51.003 に答える
10

structorで定義してclass、初期化リストを利用できます。

#include <iostream>

struct has_const_member
{
    const int x;

    has_const_member(int x_)
      : x(x_)
    { }

};

int main()
{
    int foo = 0;
    std::cin >> foo;
    has_const_member h(foo);
    std::cout << h.x << "\n";
    return 0;
}
于 2013-01-03T01:30:22.140 に答える
5

静的変数または関数ローカル変数として:

const int x = calcConstant();

クラスのメンバーとして:

struct ConstContainer {
    ConstContainer(int x) : x(x) {}
    const int x;
};
于 2013-01-03T01:30:48.173 に答える