Bonjour,
J'ai créé une petite bibliothèque avec en particulier deux petites classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 namespace LD { namespace BDD { class DataBase; class VirtualDataBaseFactory { public: virtual DataBase * createDataBase(const std::string & dbname, const std::string & login, const std::string & password = "", const std::string & host="localhost") = 0; virtual ~VirtualDataBaseFactory(){} }; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 namespace LD { namespace BDD { /** @brief DataBaseFactory for postgresql */ class PSQLDataBaseFactory : public VirtualDataBaseFactory { public: PSQLDataBaseFactory(); DataBase * createDataBase(const std::string & dbname, const std::string & login, const std::string & password = "", const std::string & host="localhost"); virtual ~PSQLDataBaseFactory(){} }; } }
Et lorsque j'essaye de l'utiliser dans mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include "../../includes/PostgreSQL_impl/psqldatabase.h" #include "../../includes/PostgreSQL_impl/psqldatabasefactory.h" namespace LD { namespace BDD { PSQLDataBaseFactory::PSQLDataBaseFactory() { } DataBase * createDataBase(const std::string & dbname, const std::string & login, const std::string & password, const std::string & host) { return new PSQLDataBase(dbname, login, password, host); } } }
J'ai une erreur d'undefined reference to vtable for LD::BDD::PSQLDataBaseFactory dans LD::BDD::PSQLDataBaseFactory::~PSQLDataBaseFactory(), mais je ne vois pas du tout d'où elle pourrait provenir... avez-vous une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <iostream> #include "../../Library/DataBase/include/database.h" int main() { LD::BDD::PSQLDataBaseFactory b; cout << "Hello World!" << endl; return 0; }
Partager