0

我有一个容器类,它从 ac api 接收指向动态数组的指针。然后这个类成为缓冲区的所有者,并且必须使用 delete[] 将其删除。

所以这个缓冲区可能是按如下方式创建的:

值*ptr = malloc(10 * sizeof(Value));

我还有一个名为 ValueWrapper 的类,它对单个值进行操作。

我的容器有一个 getter,它返回 ValueWrapper 对象,如下所示:

ValueWrapper Container::valueWrapper(int index)
{
    return ValueWrapper(_value[index]);
}

但是,一旦我的容器被销毁,VWrapper 类型的对象将具有无效的 Value*。

我该如何处理这个问题?我需要以某种方式分享 Value* 的所有权。坚持 ValueWrapper 对象只能在 Container 在范围内使用并将其写在 Container::valueWrapper(int index) 的注释中是否合理?

4

1 回答 1

5

如果您想要共享所有权,那么您可以将数组解压缩为std::shared_ptr数组并删除删除。如果您没有 C++11 支持,您可以使用boost::shared_ptrstd::tr1::shared_ptr.

于 2012-08-16T08:01:53.597 回答