1

他の 2 つのクラスのオブジェクトを含むクラスがあります。他のクラスからデータを取得できるようにするには、クラスの 1 つが必要です。例を次に示します。

class Nom{ /*says what we're eating*/ };
class Chew{ /*stuff that needs to know about what we are eating from nom*/ };

class BigBurrito 
{
   Nom n;
   Chew c;
};
4

3 に答える 3

1

Nomintoのインスタンスへのポインタを渡すのはどうChewですか? これらの行に沿って:

class Nom {};

class Chew
{
private:
    Nom *m_nom;
public:
    Chew(Nom *nom)
    : m_nom(nom)
    {}
};

class BigBurrito
{
private:
    Nom m_nom;
    Chew m_chew;
public:
    BigBurrito()
    : m_chew(&m_nom)
    {}
};
于 2012-04-03T20:32:27.270 に答える
1

他のクラスへのポインターをクラスのメンバーにすることができます

class Nom{
   Chew* chew;
};
class Chew{ /*stuff that needs to know about what we are eating from nom*/ };

class BigBurrito 
{
   Nom n;  //contains pointer to c
   Chew c;
};

または、操作を実行する関数にパラメーターを介して渡します。

class Nom
{
   void performOperationOnChew(Chew& c);
};
class Chew{ /*stuff that needs to know about what we are eating from nom*/ };

class BigBurrito 
{
   Nom n;
   Chew c;
   void doTheOperation()
   {
      n.performOperationOnChew(c);
   }
};

2 番目のオプションは、Chew論理的に に属していないため、よりクリーンな OOPNomです。

于 2012-04-03T20:33:44.423 に答える
0

n( Nom) への参照をChewコンストラクターに渡すだけです。

于 2012-04-03T20:31:38.957 に答える