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);
然后我可以通过容器对象轻松访问这些对象,而这绝不会通过自由创建这样的对象而导致内存泄漏。
但是,以这种方式创建对象是不好的做法吗?另外,不是通过存储在对象本身中的指针直接访问容器,我是否应该将容器作为函数参数传递给需要使用的函数参数?
解决方案
推荐阅读
- java - 查找矩阵中的重复元素
- java - 如何在 JavaFX 中制作一个图像并在 ActionTimer 中再次更改它?
- python - 如何将字符添加到未知字符串长度?
- java - 为什么我不能以正常方式调用已实现的接口方法?
- python - 我怎样才能一遍又一遍地问一个问题,直到用户猜出数字
- python - 有没有办法从 tkinter gui 调用海龟屏幕?
- reactjs - 有什么方法可以将完整的网页呈现为 React 应用程序中的组件?
- angular - node_modules/@angular/material/card/typings/card-module.d.ts(12,55) 中的错误
- javascript - 单击时复制文本并随后显示小弹出窗口 - 扩展代码
- firebase - 在 web javascript 中为多个数据库初始化时,firebase 实时数据库实例之一未经过身份验证