gpt4 book ai didi

c++ - 如何自动返回C指针

转载 作者:行者123 更新时间:2023-11-30 02:17:20 26 4
gpt4 key购买 nike

我目前正在为我的 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 * 才能正常工作?

最佳答案

添加

operator sqlite3_stmt* () const { return &stmt_; }

到你的包装类。

关于c++ - 如何自动返回C指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53708052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com