Bonjour,

Je souhaite créer dans une template une fonction prenant un predicat de type Predicate dans le but d'user de la foncton std::list<T>::remove_if(Predicate pred).

Seulement je n'arrive pas à l'intérieur de ma classe à ce que le compilateur reconnaisse le type Predicate.

Ma template est définit comme il suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
template <class t> class listing{
    public : 
         list<t> l ;
      ....
}
Et j'essaye à l'interieur de rajouter la fonction :
template <class T> void Listing<T>::SupprimerElement(Predicate pred) ;

Ne reconnaissant pas le type Predicate, j'ai testé de le faire passé pour un typename en écrivant :
template <class T> void Listing<T>::SupprimerElement(typename Predicate pred) ;

Mais le compilateur me jet.

Listing.h:107: erreur: expected nested-name-specifier before ‘Predicate’
Listing.h:107: erreur: expected ‘,’ or ‘...’ before ‘pred’
Listing.cpp:54: erreur: variable or field ‘SupprimerElement’ declared void
Listing.cpp:54: erreur: template declaration of ‘int SupprimerElement’
Listing.cpp:54: erreur: expected nested-name-specifier before ‘Predicate’
Listing.cpp:54: erreur: expected `(' before ‘Predicate’
Si quelqu'un pouvait me donner la solution à ce problème je lui en serais grée .

Merci d'avance.