Вот мой сценарий:C++ правило трех для encupsalator объектов
class Database {
public:
Database();
~Database();
void close();
...
private:
sqlite3 *database; //SQLITE3 OBJECT
bool isOpenDb;
...
};
Database::Database() {
database = 0;
filename = "";
isOpenDb = false;
}
Database::~Database() {
close();
}
void Database::close() {
sqlite3_close(database);
isOpenDb = false;
}
Когда Database объект будет уничтожен, я хочу, чтобы объект sqlite3 закрыт. В этой форме кажется, что это может быть небезопасный подход, поскольку, если я копирую объект, и я его уничтожаю, то скопированный объект находится в недопустимом состоянии.
На ваш взгляд, что является лучшим способом для продолжения? Я думал об одном классе, но я не уверен в этом.
Похоже, 'Database' должен быть не копируемыми (пока подвижны). –
@sftrabbit спасибо! можете ли вы аргументировать свои аргументы? –
Вы также можете использовать интеллектуальный указатель для объекта 'sqlite3'. –