Есть ли контейнер Qt, который знает об уничтоженном сигнале QObject и удаляет элемент, если элемент был уничтожен?QObject selfdeestruction aware container
I.e. как это:
QObject *obj1 = new MyObject();
QObject *obj2 = new MyObject();
QObjectContainer c;
c.add(obj1);
c.add(obj2);
qDebug() << c.size(); // Prints 2
delete obj1;
qDebug() << c.size(); // Prints 1
Подождите, у вас есть недостаток в вашей идее. Если вы удалите объект, как бы вы нашли его индекс в массиве? Вам нужно будет выполнять полный поиск каждый раз. Подумайте об этом, он не может быть реализован каким-либо разумным способом. Даже если ваш массив ловит сигнал 'destroy()', он получает только адрес указателя, а не его индекс в массиве. Вам нужно будет искать его по значению. Производительность была бы ужасной. – sashoalm
Добавьте свои объекты в качестве дочерних элементов фиктивного родителя QObject ;-) – peppe