У меня есть функция, которая возвращает указатель на объект. Как это:Предотвращать изменения объекта, возвращаемого как указатель
class SomeClass
{
public:
Object* getObject() const { return &obj; };
private:
Object obj;
}
Проблема заключается в том, что я не вызывающую функцию, чтобы изменить возвращаемый объект, он может вызывать функции, которые работают на него внутри, но не изменить OBJ внутри SomeClass .. . примером может быть проще понять:
-Если функция возвращает указатель на константный объект const Object* getObject() const
вызываемая функция не будет иметь возможность использовать не константные методы объекта (но я хочу, чтобы они были состояние).
-Если я просто возвращает указатель, функциями вызова может изменить объект:
Object* pointer = sclass.getObject();
*pointer = Object();
Так объект внутри sclass теперь другой объект (который я не хочу, чтобы это произошло).
Есть ли обходной путь?
Основная проблема заключается в том, что я не» t хотите потерять объект, который был ранее сконструирован/инициализирован ... –
Уточнение: хотите ли вы использовать неконтентные методы для объекта, но не хотите, чтобы возвращаемый указатель указывал на другой объект? –
@Hans Правильно! –