Récupérer un pointeur sur une classe Singleton
Bonjour !
Voilà je suis sur l'élaboration d'une classe de connexion à une base de donnée en Singleton. Juste pour précision j'utilise Qt pour les accès à la base de donnée. Ce que je désire donc c'est récupérer un pointeur avec la connexion instancié à la BDD. Mais j'ai un petit problème à la compilation... et là c'est plus un problème de compréhension de langage car passer du Java au C++ il y a certains aspect qui m'échappent... :roll:
Voici mes erreurs :
Code:
1 2
| main.cpp:13: error: cannot convert `QSqlDatabase' to `QSqlDatabase*' in initiali
zation |
DBConnection.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #ifndef DEF_DBCONNECTION
#define DEF_DBCONNECTION
#include <QSqlDatabase>
#include <QtSql>
class DBConnection
{
public:
//les fonctions pour récupérer/tuer l'instance
static QSqlDatabase Get();
static void Kill();
private:
//l'instance à proprement parlé
static QSqlDatabase *db_instance;
//constructeur et destructeur
DBConnection();
~DBConnection();
//bool pour vérifier si une instance est déjà présente
static bool check_instance;
};
#endif |
DBConnection.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include "DBConnection.h"
using namespace std;
DBConnection::DBConnection()
{
db_instance = new QSqlDatabase;
db_instance->addDatabase("QMYSQL");
db_instance->setHostName("192.168.99.87");
db_instance->setDatabaseName("caisse");
db_instance->setUserName("****");
db_instance->setPassword("****");
db_instance->open();
check_instance = true;
}
DBConnection::~DBConnection(){}
QSqlDatabase DBConnection::Get()
{
if(check_instance == true)
{
return *db_instance;
}
else{
new DBConnection();
return *db_instance;
}
}
void DBConnection::Kill()
{
delete db_instance;
} |
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <cstdlib>
#include <iostream>
#include <QSqlDatabase>
#include <QtSql>
#include "DBConnection.h"
using namespace std;
int main(int argc, char *argv[])
{
QSqlDatabase *con_DB = DBConnection::Get();
system("PAUSE");
return EXIT_SUCCESS;
} |
Voilà je vous remercie d'avance !