Bonjour tout le monde,
Pour mon projet actuel, j'ai dû créer un conteneur personnalisé.
Je souhaite maintenant faire une fonction générique permettant de faire la conversion entre les conteneurs de la stl (vector, set).
Voici ce que donne la classe (en simplifiée bien sûr):
Ce bout de code compile. Le problème c'est que je ne sais pas comment l'appeler... ce qui peut être un peu problématique
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
20
21 #include <vector> template <typename AClass> class GenClass { private: std::vector <AClass*> m_datas; public: template<template <typename T> class Container> void convertToGenClass(const Container<AClass*>& myContainer) { m_datas.reserve(myContainer.size()); for (typename Container<AClass*>::const_iterator it = myContainer.begin(); it != myContainer.end(); ++it) { //other treatments done here // ... m_datas.push_back(*it); } } };
Voici comment je procède:
J'ai essayé de mettre <std::vector> ou <std::vector<int> > après convertToGenClass mais rien ne change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 int main() { std::vector<int*> testVector; GenClass<int> myVector; int val = 42; testVector.push_back(&val); myVector.convertToGenClass(testVector); return 0; }
Savez-vous comment compiler ce genre de code?
Y-a-t-il une façon plus élégante pour traiter ce genre de conversion?
Merci pour tout!
Partager