2016-10-30 19 views
0

私はおそらく私が何かを見落としている私のすべてのプログラムで私を悩まし続けるこのエラーがあります。このエラーが表示されますVC++クラス。静的変数のエラーが未解決の外部シンボル

コードスニペット:

class myClass { 
private: 
    int x; 
public: 
    static int getX() { 
     x = 10; 
     return x; 
    } 
}; 

int main() { 
    cout << myClass::getX() << endl; 
    return 0; 
} 

私は取得していますエラーは言う:

エラー未解決の外部シンボル

これは何をcauseingされるか、何が間違っています私のコード?

+0

スタティック・ゲッターは静的変数にのみ使用してください。 –

答えて

0

。プライベートメンバ変数xを静的にして、クラス外で初期化することができます。次に、例は次のようになります。

#include <iostream> 
class myClass { 
private: 
    static int x; 
public: 
    static int getX() 
    { 
     x = 10; 
     return x; 
    } 
}; 
int myClass::x = 0; 

int main() { 
    std::cout << myClass::getX() << std::endl; 
    return 0; 
} 
+0

Thx。私は実際に私が作った例で静的なintを忘れていました(私のプログラムでは静的なintでした)。しかし、私はintを忘れていたmyClass :: x = 0;私の.cppファイル(私のヘッダーファイル内のクラス)に保存されています。 – sladet

2

staticクラスメンバ関数のクラスfooは、そのクラスのオブジェクトに関連付けられていません(thisポインタを持たない)。

オブジェクトなしでfooのメンバー変数にアクセスするにはどうすればよいですか?彼らがstaticでない限り、あなたはできません。

最初にfooのインスタンスを作成する必要があります。あなたのケースでは

:あなたは動作しません静的メソッドを使用して、非静的変数にアクセスしようとしているクラス内

static int myClass::getX() { 
    myClass obj; 
    obj.x = 10; 
    return obj.x; 
} 
+0

私はまだエラーを取得します。 – sladet

+0

@sladetこの場合、取得したエラーは、あなたが投稿したコードのものではありません。完全なエラーメッセージで質問を編集します。未解決の外部シンボル。それはどれですか? – DeiDei

関連する問題