私は古いオープンソース ライブラリを使用しており、次の (簡略化された) 関心のある API を使用しています。
// some class that holds a raw pointer to memory on the heap
// DOES NOT delete it in its destructor
// DOES NOT do a "deep" copy when copied/assigned (i.e., after copying both objects
// will point to the same address)
class Point;
// function used to construct a point and allocate its data on the heap
Point AllocPoint();
// function used to release the memory of the point's data
void DeallocPoint(Point& p);
// Receives a pointer/c-array of Points, along with the number of points
// Doesn't own the memory
void Foo(Point* points, int npts);
C++ 11 でこの API を使用する最良の (最も安全/最も読みやすく/最もエレガントな) 方法は何ですか? 単純に使用することはできませんvector<unique_ptr<Point, PointDeleter>>
(PointDeleter
は実装できる単純なカスタム デリータです)。関数を使用できなくなるためですFoo
(これは を期待し、 を期待Point*
しませんunique_ptr<Point>*
)。
ありがとう