假设我有两个 .cpp 文件: oranges.cpp basket.cpp 。它们分别具有orangebasket类。我的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的数据成员(orangebasket创建的对象)。

不能向参数发送颜色,因为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/

10-09 02:48