Класс создатель c++
Есть класс
obj{
friend class Creator;
obj() = default;
void foo(){a = 1;}
void boo(){b = 2;}
int size(){return 1;}
// Много функций
int a;
int b;
};
и класс, который создает объект и имеет функцию get, которая перед тем, как отдать созданный объект проверяет его на правильность.
class Creator{
public:
Creator() {val = obj{}};
// Тут приходится дублировать все функции из obj, чтобы пользователь не смог получить объект
// не через функцию get()
void foo(){val.foo()};
void boo(){val.boo()};
// ....
// а хотелось бы сделать одну функцию, которая давала бы доступ ко всем функиям подконтрольного
// объекта, например:
obj& edit(){return val;}
// Тогда не нужно будет дублировать все функции в этом классе, но есть проблема - пользователь сможет своровать
// объект в обход функции get, которая проверяет валидность. Не могу придумать способ, который
// решал бы обе проблемы сразу.
obj&& get(){return val;}
obj val;
};