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 : 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);
      }
  }
};
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

Voici comment je procède:
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;
}
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!