Mon code est:
La fonction sert à savoir si l'objet p appartient au conteneur v.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
template<typename T,typename G>
bool bool_inter2( T<G>  v, G  p)
{
  typename T<G>::iterator it1;
  for(it=v.begin();it<v.begin();it++)
  {
    if(p==*it)return true;
  }
  return false;
}
La classe template G, par exmple int, est muni de l'opérateur de comparaison ==.
La classe template F est un conteneur d'objet, par exemple vector, tel que l'on peut parcourir l'ensemble des objets contenus avec l'iterator.


Cependant le code ne compile pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
point.cpp:911: erreur: «T» is not a template
L'autre solution que j'ai envisage est:
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
 
template<typename T,class G>
bool bool_inter( G  p, T  v)
{
  typename  T::iterator it;
  for(it=v.begin();it<v.end();it++)
  {
      if(*it==p)return true;
  }
  return false;
}
template<typename T,class G>
bool bool_inter( T  v,G  p)
{
  typename  T::iterator it;
  for(it=v.begin();it<v.end();it++)
  {
      if(*it==p)return true;
  }
  return false;
}
De nouveau, ca ne compile pas: il n'arrive pas à choisir entre les deux fonctions.

Avez-vous des solutions merci!