sle*_*nja 10 c++ oop visual-c++
假设我有两个.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...?
}
}
Run Code Online (Sandbox Code Playgroud)
basket.cpp
class basket
{
int color;
void basket()
{
for(int i = 0; i < 10; i++)
oranges *o = new oranges;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我的语法可能不完美,但我如何basket从函数中获取数据库orange(orange是由创建的对象basket).
发送颜色参数不是一个选项,因为oranges 太多而且颜色basket可能会在运行时发生变化.
我在某处读到了静态函数可以解决的问题,但它们只有在相同的.cpp文件中才能工作.
那么,我该怎么办?
Oli*_*rth 17
静态函数几乎肯定不是这里的答案.
您可能需要将对"父"的引用传递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
};
Run Code Online (Sandbox Code Playgroud)
无论您使用指针还是引用,都取决于它是否Oranges可以在Baskets 之间移动.