Приемлемая практика с созданием объектов, которые взаимно зависят от его класса «контейнера»? - PullRequest
0 голосов
/ 26 февраля 2019

Скажем, у меня есть структура класса, которая может содержать группу объектов, и что содержащиеся в ней объекты должны иметь доступ к контейнеру, в котором она содержится. Вот пример структуры класса того, о чем я говорю:

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);

Затем я мог бы легко получить доступ к этим объектам через объект контейнера, и это никоим образом не вызвало быутечка памяти при свободном создании таких объектов.

Однако разве это плохая практика для создания объектов таким способом?Кроме того, вместо того, чтобы обращаться к контейнеру напрямую через указатель, хранящийся в самих объектах, я должен просто передать контейнер в качестве параметра функции для каждого случая его использования?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...