boost::intrusive_ptr
은 intrusive_ptr_add_ref
및 intrusive_ptr_release
을 정의해야합니다. 기본 클래스가 제공되지 않는 이유는 무엇입니까? 여기에 예제가 있습니다 : http://lists.boost.org/Archives/boost/2004/06/66957.php 포스터는 "나는 이것이 반드시 좋은 생각이라고 생각하지 않습니다."라고 말합니다. 왜 안돼?intrusive_ptr : 공통 기본 클래스가 제공되지 않는 이유는 무엇입니까?
업데이트 :이 클래스가 다중 상속으로 잘못 사용될 수 있다고 생각하지 않습니다. 참조 횟수가 여러 개인 기본 클래스에서 파생되는 모든 클래스에는 동일한 문제가 있습니다. 이러한 refcount가 기본 클래스를 통해 구현되는지 여부는 아무런 차이가 없습니다.
멀티 스레딩에 문제가 있다고 생각하지 않습니다. boost::shared_ptr
은 원자 참조 카운팅을 제공하며이 클래스도 가능합니다.
는 최상위 공통 기본 클래스를 (사용 'osg :: Referenced')를 삽입하여 스마트 포인터를 구현합니다. –
osg :: Referenced는 intrusive_ptr_add_ref() 및 intrusive_ptr_release() 함수를 제공하므로 boost :: intrusive_ptr과 호환됩니다. 완벽하게 작동합니다. –