2017-12-21 8 views
0

私は2つのクラスのプローブとBacteryを持っています。 Probeクラスの中には、Bacteryクラスのインスタンスがあります。私はプローブオブジェクトを介してbactery番号を取得する方法が不思議です。そのために私はセッターとゲッターを作りました。このように:ネストされたクラス属性から値を取得する方法

class Bactery { 
private: 
    int number; 
public: 
    void setNumber(int number) { 
     number = number; 
     cout << number << endl; 
    } 
    int getNumber() { 
     return number; 
    } 
}; 

class Probe { 
public: 
    Bactery bactery; 
}; 

int main() 
{ 
    Probe probe; 
    probe.bactery.setNumber(55); 
    int x = probe.bactery.getNumber(); 
    cout << x << endl; 
    return 0; 
} 

印刷X値はいくつかのランダムな番号とではありません55.私はbactery番号の適切な値を取得するために何をすべきか?

答えて

2

すべての名前に同じ名前を使用しないようにすることをお勧めします。 number = number;。どのnumberは左と右にありますか?

てみ一義化は、少なくとも:

this->number = number; 
+0

、これは問題の理由でした。ありがとうございました。 –

+0

それは本当です。おそらく、クラス変数をシャドウします。 – SirWojtek

0

問題は、あなたのsetNumber機能で発生:あなたは「」を書くとき、それはコンパイラが知っている最新の「」変数を参照します。この場合、期待通りのクラスメンバーではなく引数です。

このようなあなたの機能を変更し

:はい

void setNumber(int n) { 
    number = n; 
    cout << number << endl; 
} 
関連する問題