C++에서 쓰기 포인터 복사를 구현하는 방법에 대해 http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Copy-on-write에 따라 시도했습니다. 문제는 그것이 나를 위해 작동하지 않는다는 것입니다.C++에서 쓰기 복사 포인터 객체
는 개체의 핵심은 그것이 const가 아닌 참조 반환해야하는 경우 배경 복사를 할 참조 연산자 (*)를 오버로드에: 슬프게도
const T& operator*() const
{
return *m_sp;
}
T& operator*()
{
detach();
return *m_sp;
}
, 단지 두 번째 버전은 그 어느 것 같다 운영. 내 뾰족한-에 반대 복사본을 생성 C-나들이, 심지어
CowPtr<string> my_cow_ptr(new string("hello world"));
const string& const_ref=*my_cow_ptr;
같은 일을하는 것은 실행할 수있는 detach()
기능을 발생합니다.
왜 광고로 작동하지 않는지에 대한 아이디어가 있으십니까?
이것은 *하지 * 기록 중 복사 (이 일 경우에도). –
컨텍스트를 더 표시 할 수 있습니까? 'my_cow_ptr'을 어떻게 선언합니까? –
@Andy Prowl : 두 번째 발췌 문장을 확장했습니다. 링크에 정의 된 CowPtr ID입니다. – PSkocik