Membre générique dans une classe ("member template")
Bonjour,
J'ai déclaré une "interface" pour les conteneurs de type LIFO sous la forme d'une classe générique abstraite :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
#ifndef LIFO_H_
#define LIFO_H_
template<typename T>
class Lifo {
public:
virtual void push(const T&) =0;
virtual T pop() =0;
virtual bool isEmpty() const =0;
virtual int size() const =0;
};
#endif // LIFO_H_ |
Plusieurs classes héritent de la classe générique abstraite Lifo<T> et en définissent les fonctions membres, dont la classe générique BasicStack<T>.
J'ai ensuite voulu déclaré une classe de test qui pourrait manipuler n'importe quel objet à travers les fonctions membres de l'interface Lifo<T>.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
#ifndef LIFOTEST_H_
#define LIFOTEST_H_
#include "Lifo.h"
class LifoTest {
public:
template<typename T>
LifoTest(Lifo<T>*);
void run();
private:
template<typename T>
Lifo<T>* container;
};
#include "LifoTest.tpp"
#endif // LIFOTEST_H_ |
Code:
1 2 3 4 5 6 7 8 9
|
int main() {
BasicStack<int> pile;
LifoTest test(&pile);
test.run();
return 0;
} |
Mais j'ai une erreur à la compilation :
Code:
1 2 3 4
|
Data member '_container' cannot be a member template
|
Sachant que le membre _container est l'objet que je souhaite manipuler dans la fonction membre run(). J'ai utilisé un pointeur afin de pouvoir utiliser le polymorphisme.