Добрый день
Есть структура
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 "умными"? Правда переделать просто указатели на умные обойдется не так уж дешево
Спасибо