2012-01-25 1 views
0

수업이 있습니다. 함수는 void delete_ptr(void *);void push_into(std::set<my_string> ** pps);입니다. 이 클래스의 인스턴스가 10 개 있습니다. 각각은 다른 힙에 할당됩니다. 메인 힙에는 내 프로그램이 있고, 내 맵은 같습니다. 내 클래스 인스턴스 각각 push_into을 main에서 내 맵으로 호출하고 싶습니다. 각 push_into는 (**pps).insert(std::string("Hello str")); 또는 (**pps).insert("Hello char");을 호출합니다. 을 유지하는 이러한 my_string 클래스를 만드는 방법과 my_string 클래스 인스턴스를 만드는 클래스의 ptr ~ delete_ptr을 만드는 방법은 무엇입니까? 내가 궁금해ptr을 std :: string 및 ptr을 래퍼 인스턴스를 생성 한 클래스의 특수 클래스 함수로 유지하는 std :: string 래퍼를 만드는 방법은 무엇입니까?

주요 목표는 : 그것은 문자열을 생성 된 인스턴스의 delete_ptr 포인터를 유지하기 위해

  • 방법 생성자를 만들?
+1

사용자 할당 자로 delete_ptr을 제공하십시오. 아마 할당자를보고 싶을 것입니다. 접근 방식은 당신이 설명했던 것보다 다르지만 확장 성이 있습니다. –

답변

1

boost::shared_ptrcustom deallocator을 사용할 수 있습니다. boost::bind

+0

적어도 my_string이 생성자의'delete_ptr'에 ptr을 가져 오도록 할 수 있습니까? – myWallJSON

+0

'my_string'을 삭제하려면'delete_ptr'이 필요합니까? 'shared_ptr'이 이것을 처리 할 것입니다. 그냥'boost :: shared_ptr '을'set'에 저장하고 커스텀 콤퍼레이터를 제공하고 생성시'delete_ptr'에 대한 포인터를 제공하십시오. 예를 들어 코멘트를 주시면 내일 게시 해 드리겠습니다. 집에 가야합니다. –

+0

내 주요 요점은 일부 API 사용자로부터 숨기려는 것인데, 문자열 외에 세트를 보내기도합니다 ...) – myWallJSON

관련 문제