0

ヘッダーファイルにこれがあるとします:

class A
{
private:
     static const double x;
public:
    A(double given_x);
};

class B
{
private:
    static const double x;
    class A;
public:
     B(double x_given);
};

また、初期化中にクラス A の static const データ メンバーを初期化する必要があります。BクラスのコンストラクタからAクラスにイニシャライザリスト付き
の変数を渡せばいいと思っていたのですが、どうやら間違っているようです。x_given

これはどのように行うことができますか?

また、両方のクラス同じデータメンバーを持つ必要がある場合もあります。

編集 #1: const 変数を宣言して、クラス メンバー関数のどこでも変更されないようにする必要があります。ただし、この値は構築時に指定されます。

4

1 に答える 1

1

静的メンバーには静的なストレージ期間があるため、オブジェクトが作成されるまで待機せずに初期化されます。整数型の静的メンバーがある場合、そのconstメンバーをすぐに初期化し、次にクラス定義で初期化できます。ただし、あなたのものは typeであるため、単一の翻訳単位 (クラスの実装ファイルdoubleなど) で定義する必要があります。A

const double A::x = 48151623.42;
于 2013-02-23T21:40:34.393 に答える