나는 API 배열에서 동적 배열에 대한 포인터를받는 컨테이너 클래스를 가지고 있습니다. 이 클래스는 버퍼의 소유자가되며 delete []를 사용하여 삭제해야합니다. ;동적 배열을 통한 소유권 공유
값 * PTR = malloc에 (10 *를 sizeof (값)) 다음과 같이
그래서 버퍼가 생성되었을 수도
또한 ValueWrapper라는 클래스가 하나의 Value에서 작동합니다. 내 용기가 파괴되면
ValueWrapper Container::valueWrapper(int index)
{
return ValueWrapper(_value[index]);
}
그러나, 유형 VWrapper의 객체가 * 유효하지 않은 값을가집니다 :
내 컨테이너는 다음과 같이 ValueWrapper 개체, 뭔가를 반환 게터 있습니다.
어떻게이 문제를 해결할 수 있습니까? Value *의 소유권을 어떤 방식 으로든 공유해야합니다. ValueWrapper 객체가 Container가 범위 내에 있고 Container :: valueWrapper (int index)에 대한 주석에이 속성을 쓸 때만 사용할 수 있다고 주장하는 것이 합리적입니까?
더 간단한 사용을 위해, 오른쪽 deallocator가있는'std :: shared_ptr '은 배열 전체를 관리 할 수 있습니다. – thiton
@juanchopanza 그렇다면 버퍼 내의 각 위치에서 Value *로 초기화 된 std :: vector 및 push_back std :: shared_ptr 객체를 만듭니다. –
Baz
@Baz는 그것을 수행하는 한 가지 방법이지만 push_back을 수행 할 필요는 없습니다. 벡터의 두 iterator 생성자를 사용할 수 있습니다. – juanchopanza