Les modèles C++ template (double modèle?)

Je veux construire une Stack classe afin que l'utilisateur sera en mesure de choisir le conteneur qu'il veut utiliser pour la mise en œuvre de la Stack. Par exemple, List/Vector.

Partielle code:

de la pile.h

#ifndef STACK_H_
#define STACK_H_

template <typename T, template<typename T> class ContainerType>
class Stack{
    ContainerType<T> container;
public:
    Stack() : container(ContainerType<T>()){}

};

#endif /* STACK_H_ */

test.cpp

#include "stack.h"
#include <vector>

int main(){   
    Stack<int, std::vector<int> > stack;
    return 0;
}

Bien, il ne compile pas. J'obtiens les erreurs sur la ligne:

Stack<int, std::vector<int> > stack;

Erreurs:

expected a class template, got `std::vector<int, std::allocator<int> >' test.cpp

invalid type in declaration before ';' token test.cpp

type/value mismatch at argument 2 in template parameter 
list for `template<class T, template<class T> class ContainerType> 
class Stack' test.cpp

  • le vecteur est dans l'espace de noms std
  • Cette erreur est une conséquence de la lame de la pratique de l'écrit toujours using namespace std; et de s'habituer à elle.
  • Mais la véritable erreur est ailleurs.
InformationsquelleAutor user550413 | 2011-06-25