2016-09-29 1 views
0

これはスーパー単純質問の1つになりますが、なぜそれが起こっているのか、私は本当に思い出すことができません。だから、私はこの例ではいくつかの変数intを初期化する単純なコンストラクタを持っていますが、このintを出力するのに役立つメソッドもあります。しかし、何が間違っているのはコンストラクタです。私はintの値が正しいですが、外側にはランダムなものがいくつかあります。なぜそれが起こっているのか、それを防ぐ方法は?コンストラクタ内とその中のクラスメンバの値が異なる

はここplayer.cppです:

#include "player.h" 
#include <iostream> 

player::player() 
{ 
    int position = 1; 
} 

void player::get_pos() 
{ 
    std::cout << "You position is: " << this->position << std::endl; 
} 

とplayer.h

#ifndef PLAYER_H 
#define PLAYER_H 


class player 
{ 
    int position; 
public: 
    player(); 
    void get_pos(); 
}; 

#endif // PLAYER_H 

私もthis->positionせずにそれを試してみましたが、それはとにかく動作していません。このオブジェクトの位置を知りたいので、これは私にとっては正確なようです。

答えて

1

あなたのコンストラクタ:

player::player() 
{ 
    int position = 1; 
} 

positionというローカル変数を宣言すると、期待通りにクラスメンバを設定するのではなく、それを設定しています。

試してみてください。

player::player() 
{ 
    position = 1; 
} 
+0

OMG ..私は私の学習をストーピング嫌い理由です。常にルーキーミス。ありがとうございました ;) –