C 코드를 클래스로 변환하기 때문에 std :: shared_ptr과 같은 새로운 C++ 11 기능을 사용하고 있으며이 코드에는 " 구식 "포인터. 나는 하나의 의문이있다 : 클래스의 메소드에서, 내가 shared_ptr을 사용하는 곳에서, 다른 smart_ptr에 대한 전달 된 참조의 데이터로 초기화 한 다음 데이터를 수정할 수 있습니까? 예 :std :: shared_ptr이 다른 shared_ptr 데이터로 초기화되었습니다.
void myFunction(std::shared_ptr<T> &my_reference)
{
std::shared_ptr<T> my_local_ptr(my_reference.get());
/* Doing stuff on local pointer,
which modifies the object kept by my_reference pointer */
}
내가 잘못 했습니까? 또는이 중복 작업을 수행하지 않고도 my_reference의 데이터를 직접 수정하는 것이 더 좋다고 생각하십니까?
감사
마이크
, 당신을 지금 별도의 참조 카운트를 갖는 * 2 개의 개별 공유 포인터가 있지만 둘 다 동일한 객체를 가리 킵니다. 이것은 일반적으로 좋은 생각이 아닙니다. 예를 들어 'std :: shared_ptr my_local_ptr = my_reference;'옳은 일은 "자동적으로"일어날 것입니다. –