Erreur en c++

Résolu/Fermé
javast Messages postés 75 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 14 février 2013 - 5 déc. 2011 à 16:22
javast Messages postés 75 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 14 février 2013 - 6 déc. 2011 à 17:02
Bonjour,

J'ai une erreur que j'arrive pas à comprendre voilà mon code


main.cpp: In function `int main()':
main.cpp:11: error: no matching function for call to `B::inclut(A*)'
B.hpp:11: note: candidates are: bool B::inclut(A&) const

B.hpp


class B
{
public:

bool inclut(A&) const ;

private:
int x;
A y;

};


B.cpp
bool B::inclut(A& p) const
{
float a=abs(p.getX()-y.getX());
float b=abs(p.getY()-y.getY());
return (sqrt(x*x+y*y)<=x);
}

le compilateur fait comme si je fais appel à une fonction B::inclut(A*) alors que ma fonction reçoit une réference B::inclut(A&)

2 réponses

arthurik Messages postés 166 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 22 juin 2015 14
5 déc. 2011 à 16:29
Salut j'ai pas bcp regardé mais essaie de mettre const devant le type entre les parantheses.
Sinon fait nous voir main.cpp le parametre que tu passe en réference!
0
javast Messages postés 75 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 14 février 2013 1
5 déc. 2011 à 17:38
J'ai essayé ce que tu m'a dis, mais ça marche toujours pas :(

voilà le main.cpp

int main()
{
A a(4,5);
B c(5,a);
A p(2,3);
if ((&c)->inclut(&p))
{
cout << "c inclut l objet p" << endl;


}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
5 déc. 2011 à 19:52
Tu appelles un pointeur puisque tu envoies l'adresse mémoire. Essaie plutôt : (&c)->inclut(p) ou plus simple : c.inclut(p).
0
javast Messages postés 75 Date d'inscription mardi 20 avril 2010 Statut Membre Dernière intervention 14 février 2013 1
6 déc. 2011 à 17:02
Merci fiddy, ça marche :)
0