Класс создатель 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;
};

Ответы (0 шт):