Bonjour,
Actuellement j'essaye de créer une petite bibliothèque permettant d'encapsuler l'accès aux bases de données.
Mais je me heurte à un problème pour le résultats des requêtes.
J'ai une classe résultat qui doit avoir une méthode virtuelle pure permettant d'obtenir une ligne de résultat.
Je pensais donc retourner un tuple et faire :
Mais on ne peut pas déclarer une méthode template virtuelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 template<typename T> virtual std::tuple<T> operator[](unsigned int i) = 0;
erreur : templates may not be 'virtual'
Que cela ne tienne, il me suffit de créer une classe LigneResultat ainsi qu'une classe ElementResultat et de faire en sorte que Resultat contienne un vector de LigneResultat qui lui-même contienne un vector de ElementResultat.
Sauf qu'à partir de l'ElementResultat il faut que je puisse le convertir dans le bon type appropriée, conversion qui dépends des bibliothèques d'accès de BDD que j'utilise dans l'implémentation (pqxx pour postgresql, etc...).
Il faudrait donc que ElementResultat définisse une méthode template abstraite qui serait redéfinie par chaque implémentation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 template<typename T> virtual T as<T>(bool & reussite)= 0;
Auriez-vous une idée de comment je pourrais procéder?
Partager