begin process at 2012 05 29 08:18:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

erreur C2668 : ambiguous call to overloaded function - pb de recursivite ????


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

erreur C2668 : ambiguous call to overloaded function - pb de recursivite ????

mercredi 4 février 2004 à 23:10:02 | erreur C2668 : ambiguous call to overloaded function - pb de recursivite ????

ecully

Bonjour,
je cherche mais ne trouve pas la cause de 2 erreurs de ce programme :
error C2668: 'insert' : ambiguous call to overloaded function
cette erreur survient lors des 2 appels de la fonction insert par récursivité.
Merci de votre aide !!!



#include <iostream>
#include <list>
#include <string>
#include <fstream>
#include <iomanip>

using namespace std;

struct motligne;
typedef motligne *arbin; // def de l'arbre
struct motligne
{
string mot; // structure arborescente pr ordre alphabétique ABOH
list<int> lignes;
arbin gauche, droit; // stockage en liste
};



void insert(string,int,arbin);
void affichage(arbin);
arbin recherche(string,arbin);


void main()
{
char c;
string nomfichier; //lecture du texte sur disque
string mt;
int numligne = 1; // mise en mémoire ds type struct mot
arbin a=0, arb; // SD arborescente?
// en +: écrire un programme qui crée le fichier dique pr pouvoir tester par la suite


cout<<"entrez nom de fichier"<<endl;
cin>> nomfichier;
ifstream fi(nomfichier.c_str(),ios::in); //ouverture fichier disque
if(fi)
{
c=fi.get(); //lecture de caractère sur flot sans filtrage
while (fi)
{
if(strchr(" \n\r,.;:'",c)) //détection fin de mot
{
if(mt!=" ")
{
arb=recherche(mt,a); // pr chaque mot, on teste s'il est déjà ds l'arbre
if (arb==0) // si non, on crée un nveau noeud à l'arbre

{
insert(mt,numligne,a);
}
else arb->lignes.push_back(numligne); //si il y est on rajoute le numéro de ligne à la liste lignes du mot
mt=" ";
}
if(c=='\n') //saut de ligne
numligne++;
}
else mt=mt+c;
}

fi.close();
affichage(a);
}

else cout<<"erreue à l'ouverture du fichier"<<endl;
}


arbin recherche(string mt, arbin a) // recherche d'un mot dans l'arbre
{
if (a==0)
return 0;
if (a->mot==mt)
return a;
if ( a->mot< mt) // puisqu'on choisit d'utiliser un arbre ABOH,
return recherche(mt, a->droit); //les sous-programmes de recherche et d'insertion ont une forme simple
else return recherche(mt, a->gauche); //ils utilisent les propriétés des arbres ABOH
}



void insert(string mt, int l, arbin &a) //procédure d'insertion d'un mot ds l'arbre
{
if(a==0)
{
a=new motligne; //création d'un nveau noeud
a->mot=mt;
(a->lignes).push_back(l);
a->gauche=0;
a->droit=0;
}


else
{
if(mt < a->mot)
insert(mt,l,a->gauche); // insertion du mot ds le SAG
else insert(mt,l,a->droit); //insertion du mot ds le SAD
}
}


void affichage(arbin a)
{
list<int>::iterator it;
if(a!=0)
{
affichage(a->gauche);
cout<<setw(20)<<a->mot<<" ";
for(it=(a->lignes).begin();it!=(a->lignes).end();it++)
cout<<*it<<" ";
cout<<endl;
affichage(a->droit);
}
}
jeudi 5 février 2004 à 01:05:19 | Re : erreur C2668 : ambiguous call to overloaded function - pb de recursivite ????

ymca2003

tu déclare la fonction insérer comme cela :
void insert(string,int,arbin);

et lors de la défnition comme cela :
void insert(string mt, int l, arbin &a)


=> pour le compilateur, ce sont 2 fonctions différentes.

Donc dans le corps de la fonction insert, lorsque tu appelle récursivement insert, le compilateur ne sait pas laquelle appeler car les paramètres passés ne lui permette pas de trancher (le troisième argument peut être consider comme de type arbin ou référence sur arbin).

=> la déclaration au début du prog doit correspondre à la définition de la fonction :
void insert(string,int,arbin&);


Cette discussion est classée dans : insert, string, mot, mt, arbin


Répondre à ce message

Sujets en rapport avec ce message

C string compare [ par Yunchi ] Bonjour, Je recherche une fonction dans le bibliotheque string.h ou autre qui permettrait en fait de savoir si une chaine est presente dans une autre Palindrome c++ [ par bretdu55 ] Bonjour, voila je doit faire un programme qui vérifie si le mot est un palindrome ou non, et qui retourne un booléen. Voila mon prog, si quelqu'un peu un nom utilisateur et son mot de passe [ par rose6185 ] alut , j'ai créé une petite application avec une base de donnée acces et une connexion ado , delphi 7 ... et je veux que mon application ne soit accéd Problème pour stoker une string dans un char* [ par Faroww ] Salut, Alors voici mon problème j'utilise une OpenFileDialog (Parcourir)pour permette a l'utilisateur de choisir un fichier. Je récupéré le patch du Aide Code C++ (Ecriture, comparaison de chaines, remplacement de chaines dans un fichier ect) [ par JosselynColombet ] Bonjour, Je m'appel Josselyn et je suis nouveau sur le forum de CppFrance.com Je travail sur le cryptage des mot de passes depuis plusieurs semaines Problème d allocation dynamique [ par Beqtb0x ] /*Bonjour a tous, je viens d'arriver sur ce site, je suis étudiant en première année d'informatique et j'ai un problème a un tp que même la prof n'est [BAR]Action à faire si mauvais mot de passe lors de l'authentification de session Windows [ par yellow288 ] Bonjour tous le monde, Quelqu'un saurait comment faire pour mettre ceci en place sur windows : lors de l'authentification de session Windows (au dém Excel 2007, filtrer un tableau croisé dynamique avec 2 champs dépendants [ par Paulo66 ] Bonjour a tous, Je ne suis pas surement pas sur le bon forum mais je ne trouve pas développement office dans la liste déroulant [^^confus5] Je suis


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales