Дан следующий класс:
class Foo
{
public:
//...
private:
Bar mBar;
};
Можно ли предоставить элемент mBar
таким образом, чтобы к нему могли получить доступ его члены, но не сам объект mBar
?
Причина в том, что пользователи должны иметь доступ ко всем членам mBar
, но они не должны иметь возможность назначать другой экземпляр Bar
для mBar
.
Bar
имеет много членов, и было бы сложно написать геттеры / сеттеры и переадресовать функции для них всех. Но если mBar
обнародован, можно сделать aFoo.mBar = Bar(/*...*/);
, и это единственное, что нельзя допустить.
Удаление операторов присваивания Bar
не вариант.