2017-04-23 21 views
0
#include<iostream> 

class Foo { 
    protected: // Make x visible to derived classes 
     int x; 
    public: 
     Foo() { 
      x = 2; 
     } 
}; 

class Derived : public Foo { 
    public: 
     Derived() { 
      x = 4; 
     } 

     void print(){ 
      std::cout << x << std::endl; 
     } 
}; 


int main() { 
    Derived a; 
    a.print(); 
} 

これは印刷します。私はprintのxの両方の値にアクセスしたいです。私は2と4の両方を印刷したいです。私はFooのオブジェクトをDerivedクラスで作成し、object.xでアクセスする必要がありますか? Fooのコンストラクタを複数回呼び出します。そのようなことは起こりたくありません。派生クラスの基底クラスから変数の値にアクセスする方法は?

+2

'Derived'クラスに別のメンバー変数を使用しますか? –

+5

変数には一度に1つの値しかありません。 –

+3

* "2と4の両方を印刷したい" * - 'std :: cout << 2 << 4 << '' \ n''?真剣に、あなたはどういう意味ですか? –

答えて

0

オブジェクト合計にxがあるのはです。 Fooの部分とDerived部分の1つではありません。したがって、Derivedコンストラクタがxに4を代入すると、それは変数periodの値になります。 2つの異なる値を保持する必要がある場合は、2つの変数が必要です。

2

2つの値を保持するには、2つの変数が必要です。

関連する問題