Forum Clubic

Probleme d'appel de methode en C++[en cours]

Bonjour a tous alor voila mon probleme je cherche a résoudre un pb due a un appel de foncction
la fonction se trouve dans une classe en partie public dont voici le prototype:

CPoint translation(CPoint&, CPoint&);

le code associé de la fonction et le suivant:

CPoint CPoint::translation(CPoint& A, CPoint& B)
{
	return A+B;
}

et voici son appel lors du test:

	CPoint P11(12.0,5.0);
	CPoint P12(1.0,1.0);
	cout<<"Valeur attendue: 13+i(6)"<<endl;
	cout<<"Valeur obtenue : "<<P11.translation(P11,P12)<<endl<<endl;

seulement je voudrais suppimer la partie "P11."qui ne sert a rien mais si il n’y est pas le compilateur gueule.
je voudrais mettre uniquement “translation(P11,P12)” mais je ne sait pas quoi modfier merci pour votre aide


Class CPoint
{
[...]

protected:
CPoint m_cPoint;
}

CPoint CPoint::get()
{
  return m_cPoint;
}

CPoint CPoint::translation(CPoint& A, CPoint& B)
{
  m_cPoint = A+B;
}

 CPoint P11(12.0,5.0);
CPoint P12(1.0,1.0);
cout<<"Valeur attendue: 13+i(6)"<<endl;
cout<<"Valeur obtenue : "<<P11.get() <<endl<<endl;


:neutre:

KarLKoX>>
C’est la solution oui.

Natsume>>
Par contre j’ai comme l’impression que tu ne veux pas effectuer une translation sur l’objet appelant, mais plutôt renvoyer la position après translation, sans translater.
Pour effectuer une translation tu serais obligé(e) de faire “A = A.translation(A, B)”.
Si tu veux faire comme cela (et je ne te le conseille pas, l’exemple de KarLKoX étant plus logique), tu pourrais enlever le “A.” en utilisant une fonction amie à la classe en question.
Tu pourrais alors faire “A = translation(A, B)”.

Plusieurs solutions:

  1. tu fais une fonction exterieure à la classe
  2. tu déclare dans la classe cette fonction amie et tu l’ecris a l’exterieur
  3. tu ecris cette fonction statique et appellée via Cpoint::translation(a,b);