假设我有两个 .cpp 文件: oranges.cpp 和 basket.cpp 。它们分别具有orange
和basket
类。我的main
程序生成许多baskets
,这些继而又生成许多oranges
。因此,基本上,main
将具有Baskets
的许多对象;和baskets
将具有Oranges
的许多对象。如果我在orange
中有一个需要知道购物篮颜色的函数,我将如何查找购物篮的颜色?
orangle.cpp
class oranges
{
void whichColorBasket()
{
// get the color of the basket the orange is in...?
}
}
basket.cpp
class basket
{
int color;
void basket()
{
for(int i = 0; i < 10; i++)
oranges *o = new oranges;
}
}
我知道我的语法可能并不完美,但是如何从
basket
中的函数访问orange
的数据成员(orange
是basket
创建的对象)。不能向参数发送颜色,因为
orange
太多,并且basket
的颜色可能会在运行时更改。我在某处读到了静态函数可以解决问题的方法,但是仅当它们在相同的 .cpp 文件中时,它们才起作用。
那么,我该怎么办?
最佳答案
静态函数几乎可以肯定是而不是此处的答案。
您可能需要将对“父” Basket
的引用传递给Oranges
对象,然后可以查询该对象以查找颜色。
例如:
class Basket
{
public:
void Basket() {
Oranges *o = new Oranges(*this);
}
color getColor() const { ... }
};
class Oranges
{
private:
const Basket &myBasket;
public:
Oranges(const Basket &b) : myBasket(b) {} // Store reference
color getColor() const { return myBasket.getColor(); } // Interrogate my basket
};
使用指针还是引用将取决于
Oranges
是否可以在Basket
之间移动。关于c++ - 一个棘手的OOP问题,我从来没有头脑清醒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6059970/