Обнаружение, когда объект создан или удален - PullRequest
0 голосов
/ 16 апреля 2020

Я зацикливаю массив указателей для хранения адресов внутри

 std::vector<void*>Objects

Мне нужно реализовать две функции: OnObjectCreate (void * Object) и OnObjectDelete (void * Object). Как мне подойти к этой задаче?

Это моя первоначальная мысль:

Loop Array :
 if(Object)
    OnObjectCreateCall
    push_back Object To Vector
else
    Check if Object is inside Vector
        true : OnObjectDeleteCall
               Remove Object From Vector
        false: continue 
end Array loop

1 Ответ

0 голосов
/ 16 апреля 2020

Обнаружение, когда объект создается или удаляется

Вы можете обнаружить создание объекта, выполнив обнаруживаемые вещи в конструкторе объекта. Точно так же вы можете обнаружить разрушение с помощью деструктора. Чтобы не пропустить создание какого-либо экземпляра, вы должны убедиться, что все конструкторы выполняют обнаружение. Помните, что автоматически созданные конструкторы копирования и перемещения не вызывают конструктор по умолчанию.

Например:

class Object {
    Object() {
        OnObjectCreateCall(this);
    }
    Object(const Object&) = delete;
    ~Object() {
        OnObjectCreateCall(this);
    }
};
...