ページ 11

基底クラスのメンバ変数を共有したい

Posted: 2010年10月05日(火) 19:47
by dic
ハッカーになったようでおめでとう俺

ハッカーになったようですが、質問はあいかわらず低レベルです
このままいけば質問攻めの 国会議員のれんほ・・・いやなんでもないです

下のように基底クラス CData があり それを継承し、それぞれのインスタンスを生成してます
このとき基底クラスの CData::m_iValue を 派生クラス両方で共有して扱いたいのですが
どういった方法があるでしょうか?

現在、CStepA のインスタンスから CStepB のインスタンスへと CData::m_iValue の値を引き継ぎたい
状態で、派生せずにCDataのインスタンスを生成するか、static メンバ変数にするか、そのほかか迷ってます
どちらがいいでしょうか?
#include <iostream>
using namespace std;

class    CData
{
protected:
    int        m_iValue;
public:
    virtual    void    Init();
    virtual    void    Print();
};
void    CData::Init(){}
void    CData::Print(){ cout << "miss" << endl; }

class    CStepA    :    public    CData
{
public:
    void    Init();
    void    Print();
};
void    CStepA::Init(){ m_iValue = 10; }
void    CStepA::Print(){ cout << "m_iValue: " << m_iValue << endl; }

class    CStepB    :    public    CData
{
public:
    void    Init();
    void    Print();
};
void    CStepB::Init(){ m_iValue = 100; }
void    CStepB::Print(){ cout << "m_iValue: " << m_iValue << endl; }


int        main()
{
    CData    *stepA = new CStepA;
    CData    *stepB = new CStepB;

    stepA->Init();
    stepB->Init();

    //    stepA->m_iValue と stepB->m_iValue の値を共有したい
    stepA->Print();
    stepB->Print();

    delete stepA;
    delete stepB;

    return 0;
}

Re:基底クラスのメンバ変数を共有したい

Posted: 2010年10月05日(火) 21:16
by dic
色々考えましたがシンプルなstaticメンバ変数でいきたいと思います