J'ai créé la classe suivante pour une connexion sqlite3:RAII et l'affectation
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);
}
}
puis on peut initialiser une connexion comme suit
SqliteConnection conn("./database.db");
Cependant, je voudrais pouvoir partager connexion, le stocker en tant que membre dans les classes, etc., et le problème est avec l'opérateur d'affectation par défaut operator=
. Faire quelque chose comme
SqliteConnection conn("./database.db");
SqliteConnection conn1 = conn;
conduirait à deux appels sqlite3_close sur le pointeur de la base de données que chaque variable est hors de portée. Comment surmontez-vous cette difficulté avec RAII lorsque vous devez affecter votre ressource à une variable différente?
+1 Pour mentionner le suppresseur personnalisé. – AraK
ressemble à un peu de déchets dans votre réponse: la ligne ', destroy_connection())' ne semble pas appartenir. –
@Ben: Oups, merci - je ne sais pas comment j'ai compris ça. –