2017-12-10 18 views
-1

少しの研究の後、私はこのような質問を見つけられなかったと私は驚いています。なぜ静的変数に値を割り当てることができないのだろうかと思っています。私はちょうど1つのcppファイル内のクラスを作成しています任意のヘッダを使用していないコード内の静的変数

ノート(私は良い習慣を知らない)、ここで私は、これはないだろうJavaでは

main.cpp|17|error: ISO C++ forbids in-class initialization of non-const static member 'Rabbit::now'| 

を取得し、エラーがあります問題

おかげ

class Rabbit 
{ 

public: 
    string name; 
    string color; 
    int age; 
    bool friendly; 
    int happiness; 
    static time_t now = 4; 
    const int currentID; 
}; 
+2

* "Javaではこれは問題ではありません" * - C++はJavaとは異なる考え方を持っています – StoryTeller

+1

C++はJavaではありません。同じような構文をしているという理由だけでも、言語そのものが似ているわけではありません。 –

+0

これはC++で許可されていることに注意してください17、*変数が 'inline'としてマークされている場合。次に、別の定義も必要ありません。 –

答えて

1

なぜ私は静的変数に値を割り当てることができないのだろうか?

静的変数に任意の値を割り当てることができます。あなたはクラス定義自体の中にそれを割り当てません。これは、static変数を複数回初期化することができないためです。あなたがクラス定義の中でそれを初期化することが許されていれば、それは問題になります。

私は、私はちょうど1つのcppファイル(私は良い習慣を知らない)

右にクラスを作成しています任意のヘッダを使用していません。ヘッダーを使用していた場合、なぜクラス定義内で変数の初期化が問題になるのか分かります。ヘッダーが含まれている各翻訳単位は、静的変数を初期化しようとしているため、表示されているエラーは発生しません。

1

あなたは

そして、もしC++でこれを行うだろうか尋ねている場合