【发布时间】:2013-08-25 00:54:23
【问题描述】:
我正在用 c++ 编写,但我的 RAII 有一些问题。
我想使用指向结构的指针作为私有成员来构建自定义类。
struct mystruct;
typedef struct mystruct mystruct_t;
class container
{
public:
container();
private:
shared_ptr<mystruct_t> data;
mystruct* init();
void destroy(mystruct*);
};
在类的构造函数中,我想构造智能指针,传递给它分配器和析构器方法。这两种方法来自一个库(它们在分配内存后准备结构),我无法修改它们。所以我想将它们包装在两个类方法中(我称它们为 init 和 destroy)。
我以为 shared_ptr 的委托构造函数是这样的
container()
: data(nullptr, std::bind(&container::destroy), std::bind(&container::init) )
{}
但它不起作用。 任何的想法?谢谢!
【问题讨论】:
-
C++ 中不需要
typedef structs' -
Euhm,实际上该结构来自我必须包装的 c 库。我试图将所有涉及的代码总结得更清楚。我已经知道了,但是谢谢! :)