Bonjour à tous,

Voici ma problématique:
Je souhaite créer une dll de Base à tous mes projets, appelons là Common.
Bien-sur, je ne vais pas réinventer la std ou autre lib.

J'aimerai justement choisir une api (Poco ou Qt dans mon cas) et surcharger toutes les classes que je risque d'utiliser dans mes projets.

Mes projets ne doivent pas avoir connaissance de l'api choisie. Ce qui me permettra dans le futur de changer facilement d'api par une autre en modifiant seulement le projet Common.


Quelle est la meilleur méthode?
- utiliser des #define dans tous les sens
- surcharger les classes qui m'interesse
J'opte pour le moment pour la 2eme solution

Je rencontre le souci suivant:
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
 
Fichier MaClasseSurchargee.h
 
 
#include "API/NamespaceA/ClasseA.h"
 
namespace Common
{
	namespace NamespaceA
	{
		class Common_API ClasseA: public API::NamespaceA::ClasseA
		{
		};
 
	} //NamespaceA
} //Common
Si j'inclue MaClasseSurchargee dans un autre projet de plus haut niveau.
Ce projet à besoin de savoir où se trouve:
"API/NamespaceA/ClasseA.h"
Et je ne veux pas lui donner l'info

Et malheureusement je ne peux pas écrire:
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
 
namespace API
{
	namespace NamespaceA
	{
		class ClassA;
	}
}
 
namespace Common
{
	namespace NamespaceA
	{
		class Common_API ClasseA: public API::NamespaceA::ClasseA
		{
		};
 
	} //NamespaceA
} //Common


Comment m'en sortir?
Je suis sur qu'il y a une solution simple.