Как я могу создать связанный список всех объектов, которые когда-либо были созданы с этим классом? - PullRequest
0 голосов
/ 31 мая 2018

Привет

У меня есть класс A, и у этого класса есть конструкторы, методы-мутаторы, методы инспектора и так далее.Как я могу создать связанный список всех объектов, которые когда-либо были созданы с этим классом (под всеми объектами я имею в виду, что «новый» объект также должен быть связан как новый, если он изменяется методом мутатора).Если возможно с небольшим примером.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Вот пример того, что имел в виду Sid S:

Ah

class A {
public:
    A(vector<A*>& a_objects_vector) {
        a_objects_vector.push_back(this);
    }
    ~A(vector<A*>& a_objects_vector) {
        a_objects_vector.remove(this);
    }
};

main.cpp

#include "A.h"

int main() {
    vector<A*> all_a_objects;
    A a(all_a_objects), *a1 = new A(all_a_objects);
    /*Do your magic here...*/
    delete a1;
    return 0;
}
0 голосов
/ 31 мая 2018

Самый простой способ - использовать статический список и модифицировать его из конструктора и деструктора.Например:

class A {
    static std::list<A *> s_instances;

public:
    A() { A::s_instances.push_back(this); }

    ~A() { A::s_instances.remove(this); }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...