Скажем, у меня есть структура класса, которая может содержать группу объектов, и что содержащиеся в ней объекты должны иметь доступ к контейнеру, в котором она содержится. Вот пример структуры класса того, о чем я говорю:
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);
Затем я мог бы легко получить доступ к этим объектам через объект контейнера, и это никоим образом не вызвало быутечка памяти при свободном создании таких объектов.
Однако разве это плохая практика для создания объектов таким способом?Кроме того, вместо того, чтобы обращаться к контейнеру напрямую через указатель, хранящийся в самих объектах, я должен просто передать контейнер в качестве параметра функции для каждого случая его использования?