Utilisation d'une methode template appartenant à une classe template
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):
Code:
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);
}
}
}; |
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 :mouarf:
Voici comment je procède:
Code:
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;
} |
J'ai essayé de mettre <std::vector> ou <std::vector<int> > après convertToGenClass mais rien ne change.
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!