몇 가지 관련 개체 유형에 대한 참조를 제공하는 라이브러리를 작성했습니다. 이러한 모든 객체는 내부적으로 라이브러리에 의해 관리되며 수명은 boost::shared_ptr
라이브러리 인터페이스에서 weak_ptr에 대한 액세스를 제공하는 것이 현명합니까?
입니다. 라이브러리의 사용자는 노출 된 객체의 수명도 알 수 있습니다. 따라서 포인터를 저장하거나 이러한 객체에 대한 참조를 유지할 수 있습니다. 그들이 이것을하고 그 물체가 더 이상 유효하지 않을 때를 알는 것은 합리적 일 것입니다.
하지만 유감스럽게도 내 사용자가 합리적이라고 생각합니다.
라이브러리에 weak_ptr
의 객체를 노출시키는 것이 허용됩니까? 다른 도서관에서 해본 적이 있습니까?
나는이 라이브러리의 사용법을 어플리케이션에서 프로파일 링했으며, weak_ptr
을 독점적으로 드러내는 것은 너무 중요한 일임을 발견했습니다.
어떤 자체에 weak_ptr
노출시킬 오브젝트 일치 API 함수 또는 weak_ptr은 기준 중 하나를 노출하거나 할 필요가 지혜롭게 있을까?
weak_ptrs를 노출해야하는지 묻는다면, 프로파일 링을 통해 어디서나 weak_ptrs를 사용할 수 없다는 것을 알 수 있습니다 - 맞습니까? 성능이 중요한 경우에는 무엇을 대신 제공 하시겠습니까? 원시 참조? 또는 shared_ptr? –
@j_random_hacker : 라이브러리가 이미 참조를 노출합니다. 참조 또는 weak_ptr 중 하나를 노출하는 API 함수를 비교하는 것을 고려하고 있습니다. –
흠. 실수를 감지하도록 호출 코드를 얻으려고하기 때문에 shared_ptrs 대신 weak_ptrs를 제안하는 것 같습니다. 맞습니까? 하지만 호출 코드가 weak_ptr을 shared_ptr로 바꾸어야한다고 생각하기 때문에 많은 보호 기능을 구매하지 않아도됩니다. ... –