Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Сентябрь 19, 2016, 07:20



Название: Организация данных
Отправлено: Igors от Сентябрь 19, 2016, 07:20
Добрый день

Есть структура
Код
C++ (Qt)
struct CData {
Container1 * data1;
Container2 * data2;
Container3 * data3;
Container4 * data4;
...
ContainerN * dataN;
};
На сегодняшний - все "просто указатели" (не "умные"). Нужно добавить возможность "ссылки", т.е. какая-то CData использует напр только data1 и data2, а все остальные контейнеры берет из другой CData. Это можно сделать без всяких затей, напр
Код
C++ (Qt)
struct CData {
Container1 * GetData1( void ) { return UseRef(FLAG_1) ? mRef->GetData1() : data1; }
..
private:
CData * mRef;  // master
int mFlag;         // what to use from master
 
Container1 * data1;
...
};
Но сейчас трудно оценить насколько хорошо это "ляжет", не придется ли потом "ловить блох" в операциях удаления, undo и др. Может есть что-то симпатичное c "умными"? Правда переделать просто указатели на умные обойдется не так уж дешево

Спасибо