创建相互依赖的“容器”类的对象是否可以接受?

时间:2019-02-26 19:14:53

标签: c++11

说我有一个可以容纳一组对象的类结构,并且其中包含的对象需要有权访问其本身所包含的容器。这是我所讨论的示例类结构:

class Item;
class Container {
private:
    std::vector<Item*> items;
    ....
public:
    void add(Item *newItem) {
        items.push_back(newItem);
    }
    ....
}

class Item {
private:
    int data;
    Container* container;
    ....
public:
    Item(int data, Container* container) {
        this->data = data;
        this->container = container;
        if(container != nullptr) {
            container.add(this);
        }
    }
    ....
}

这将使我可以轻松地创建一个对象,如下所示:

Container contain;
new Item(1, &contain);
new Item(2, &contain);
new Item(3, &contain);

然后我可以轻松地通过容器对象访问这些对象,并且通过自由创建这样的对象绝不会导致内存泄漏。

但是,以这种方式创建对象的不良做法是吗?另外,我应该只在需要使用容器时将其作为函数参数传递给函数,而不是直接通过存储在对象本身中的指针直接访问容器吗?

0 个答案:

没有答案