2017-09-30 34 views
0

にあります。私はエラーを取り除くために数時間努力してきましたが、それは消えません。他の投稿を参照しましたが、何も動作しないようです。未解決の外部シンボルがクラス

私はこのような何かと私の.Hファイルだ:

#include "common.h" 

common::common() 
{ 
    common::s_a = 100; 
    common::s_b = 100; 
} 

:そして、私はこのようにこれらの変数を定義した.CPPファイルを持っ

using namespace std; 

    class common 
    { 
    public: 
    common(); 

     static double common::s_a; 
     static double common::s_b; 

を次に、このエラーメッセージが表示されます(実際の変数名はaの代わりになります)

common.obj:エラーLNK2001:未解決の外部シンボル "パブリック:静的 ダブル共通:: s_playerMaxHealth"(s_playerMaxHealth 2NA @@共通@?)

編集:私は静的削除する場合問題は、静的ですもうエラーはありません。しかし、私は意図的に動作するために静的を使用する必要があります。

+0

[参照/未解決の外部シンボルエラー、どうすれば修正できますか?](https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do -i-fix) – user0042

+0

静的変数の代入は、コンストラクタ内にあるべきではありません。代わりに、クラスが定義されたのと同じスコープにある必要があります。この場合、グローバル名前空間です。 – Jonesinator

答えて

0

あなたは(任意の関数の外で、あなたの.cppファイルに)そうのようなこれらの変数を定義する必要があります。

double common::s_a; 
double common::s_b; 

これは宣言(定義ではない)を次のとおりです。

class common 
{ 
    static double common::s_a; 
    static double common::s_b; 

これは用途です(どちらも定義ではありません)。

common::common() 
{ 
    common::s_a = 100; 
    common::s_b = 100; 
} 
関連する問題