I created the following class to connect 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);
}
}
and then you can initialize the connection as follows:
SqliteConnection conn("./database.db");
However, I would like to be able to use this connection, store it as a member in classes, etc., and the problem is with the default assignment operator operator=. Doing something like
SqliteConnection conn("./database.db");
SqliteConnection conn1 = conn;
will result in two sqlite3_close calls in the database pointer, as each variable is out of scope. How do you overcome this problem with RAII when you need to assign your resource to another variable?
source
share