0

クラスを宣言して、同じクラスのいくつかのオブジェクト間で静的インスタンスを使用できるかどうかは、実際にはよくわかりません。すなわち:

class State {
    public:
        State();
        static CustomNumberDist normal_dist;
    private:
        int id;   
};

したがって、State のすべてのインスタンスには、CustomNumberDist の同じインスタンスが含まれている必要があります。私はコンパイルしましたが、それが有効かどうか、または後で問題が発生する可能性があるかどうか疑問に思っています。

4

2 に答える 2

6

指定した宣言 (ヘッダー ファイル、つまり .h) は完全に有効です。

ただし、定義(.cppファイル)では必要です

State::CustomNumberDist normal_dist;

リンク段階に到達すると、静的オブジェクトにメモリが必要になります。

于 2012-09-21T17:10:36.657 に答える
0

it is not valid. It should be like :

class X
{
public:
      int normalValue = 5; //NSDMI
      static int i;
};

int X::i = 0;

i needs a place in the memory. In the memory which is not involved with a concrete object .

More information can be find here:

Static Data Member Initialization

于 2012-09-21T17:06:20.067 に答える