我目前正在为C C++编写一个C语言库。为此,我创建了一个对象,当一个对象超出范围时,它会自动删除C部分。我这样做是作为一个例子
sqlite3_stmt *
:
class auto_stmt_t
{
public:
auto_stmt_t() :
stmt_(NULL)
{
}
virtual ~auto_stmt_t()
{
reset();
}
void reset()
{
if (stmt_ != NULL)
{
::sqlite3_finalize(stmt_);
stmt_ = NULL;
}
}
bool prepare(const std::string &query, sqlite3 *db)
{
reset();
return ::sqlite3_prepare_v2(db, query.c_str(), -1, &stmt_, NULL) == SQLITE_OK;
}
private:
sqlite3_stmt stmt_;
};
现在我想把这个对象传递给
sqlite
功能,如
sqlit3_step
这需要一段时间
sqlite3_stmt*
作为论据。
有没有一种方法可以让我的物体通过,然后自动浇铸?大概是这样的:
auto_stmt_t stmt;
stmt.prepare("SELECT bar FROM foo");
::sqlite3_step(stmt);
我已经看到这是可能的,我需要哪个操作员过载才能自动获取
sqlite3_stmt*
为了让它起作用?