Я создал следующий класс для соединения 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, когда вам нужно присвоить свой ресурс другой переменной?