我有一个包含其他两个类的对象的类。我需要其中一个类能够从另一个类中获取数据。这是一个例子。
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;
};
答案 0 :(得分:1)
如何将Nom
实例的指针传递给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)
{}
};
答案 1 :(得分: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);
}
};
第二个选项是更清晰的OOP,因为Chew
在逻辑上不属于Nom
。
答案 2 :(得分:0)
只需将对n
(Nom
)的引用传递给您的Chew
构造函数。