객체에 대한 포인터를 반환하는 함수가 있습니다. 이처럼 :포인터로 반환 된 객체의 변경 방지
class SomeClass
{
public:
Object* getObject() const { return &obj; };
private:
Object obj;
}
문제는 내가, 그것을 내부적에서 작동 함수를 호출 할 수 반환 된 객체를 변경하는 호출 작동하지 않습니다,하지만 SomeClass 내부의 OBJ을 변경하지 않는 것이 있습니다 .. 예제는 이해하기 쉽습니다.
- 함수가 const 개체 const Object* getObject() const
에 대한 포인터를 반환하면 호출하는 함수는 개체의 비 const 메서드를 사용할 수 없지만 할 수 있는). 단순히 포인터를 반환 - 만약
는, 호출 기능은 객체를 변경할 수 있습니다
Object* pointer = sclass.getObject();
*pointer = Object();
그래서 지금 (나는 일이하고 싶지 않은) 다른 객체이다
sclass 내부의 개체입니다. 해결 방법이 있습니까?
가장 큰 문제는 내가 돈 '이다 당신은 당신이
주이 제한이 가치가 있는지 결정해야합니다 이전에 생성/초기화 된 객체를 잃고 싶지 않습니다 ... –
설명 : 객체에 비 const 메소드를 사용할 수 있지만 반환 된 포인터가 다른 객체를 가리 키지 않도록하려면 하시겠습니까? –
@ 한스 그렇습니다. –