Есть 3 объекта QString. Пользователь удалил 2-ю. Естественно, перед удалением мы записали ее в стек undo. Все хорошо, но эта строка входила в set(ы). Значит и указатели на нее в set'ах должны быть удалены. Как сказать undo что надо восстановить связки?
Опять абстрактная задача. Ну хорошо, приведу один абстрактный пример решения.
Видимо у нас с Вами различное понимание абстракции
- 3 объекта QString - разве это абстрактно? По-моему - это предельно конкретно
- Есть set'ы, BRE предложил QList <QObject *> для set'ов. Хорошо, по существу так оно (сейчас) и есть. Оформляем:
typedef QList <QObject *> TObjectList;
typedef QList <QObject *> TSel;
typedef QList <TSet> TSelList;
TObjectList theObjects; // all objects in task
TSetList theSets; // all sets in task
При активности пользователя случилось:
theObjects.append("One");
theObjects.append("Two");
theObjects.append("Three");
...
theSets[selectedSet].append(theObjects[selectedObject]); // добавили selectedObject в selectedSet
Никак не могу понять, ЧТО неясно и зачем обзывать очевидные вещи абстракцией?
Если тема Вас не интересует - просто не отвечайте
Если интересует - отвечайте по существу а не "взагалi"