说我有一个可以容纳一组对象的类结构,并且其中包含的对象需要有权访问其本身所包含的容器。这是我所讨论的示例类结构:
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);
然后我可以轻松地通过容器对象访问这些对象,并且通过自由创建这样的对象绝不会导致内存泄漏。
但是,以这种方式创建对象的不良做法是吗?另外,我应该只在需要使用容器时将其作为函数参数传递给函数,而不是直接通过存储在对象本身中的指针直接访问容器吗?