2011-10-26 14 views
5
//foo.h 
class Foo 
    { 
    private: 
     static int number; 

    public: 
     static int bar(); 
    }; 

//foo.cc 
#include "foo.h" 

int Foo::bar() 
{ 
    return Foo::number; 
} 

これは機能しません。静的関数をクラス定義の外に定義し、静的値にアクセスしたいと考えています。静的関数をクラス外に定義し、静的値.hと.ccファイルにアクセスします。

undefined reference to `Foo::number' 
+0

静的な値が定義されていませんでした。 foo.ccに 'int Foo :: number;'を追加してください –

答えて

7

あなたはそれを定義する必要がある静的メンバーも宣言しました。 これをcppファイルに追加してください。

int Foo::number = 0; 

これは良い読まれるべきである:

what is the difference between a definition and a declaration?

+0

ありがとう!私はこれがFoo :: numberをプライベートとして設定したときに可能であることを知りませんでした – thomas050903

1

Foo :: numberを宣言しました。定義を追加する必要があります。あなたのcppファイルでこの行を追加してください

int Foo::number = 0; 
2

あなたがFoo::numberを定義する必要があります。

// foo.cc 
... 
int Foo::number(0); 
関連する問題