【发布时间】:2011-03-17 11:32:02
【问题描述】:
我为 sqlite3 连接创建了以下类:
class SqliteConnection
{
public:
sqlite3* native;
SqliteConnection (std::string path){
sqlite3_open_v2 (path.c_str(), &native, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
}
~SqliteConnection (){
sqlite3_close(native);
}
}
然后可以如下初始化连接
SqliteConnection conn("./database.db");
但是,我希望能够共享此连接,将其存储为类中的成员等,但问题在于默认赋值运算符operator=。做类似的事情
SqliteConnection conn("./database.db");
SqliteConnection conn1 = conn;
当每个变量超出范围时,将导致对数据库指针的两次 sqlite3_close 调用。当您需要将资源分配给不同的变量时,如何通过 RAII 克服这一困难?
【问题讨论】:
标签: c++ raii assignment-operator