Partage
  • Partager sur Facebook
  • Partager sur Twitter

Methode static avec parametre par reference

    27 mai 2008 à 20:12:36

    Bonjour,

    Je me suis mis au C++ il n'y a pas longtemps (j'alterne le tuto de M@teo et le livre programmer en C++ de Claude Delannoy), pour info je sais programmer en Java et j'ai de "vieux" reflexes qui ne vont pas (pointeur et reference O_o). Venons en au fait : dans ma classe Point j'ai une methode static qui calcul la difference de coordonnées entre deux objets Point. ma methode est comme ca :

    void Point::distanceEntreDeuxPoints(Point & p1, Point & p2)
    {
    	float distanceAbs = p1.getAbs() - p2.getAbs();
    	float distanceOrd = p1.getOrd() - p2.getOrd();
    
    	std::cout << "La distance entre les deux points et x : " << distanceAbs << " et en y : " << distanceOrd << std::endl;
    }
    


    Mon probleme c'est le main ! car je créé deux point, mais ces deux points sont des pointeurs et je ne peux pas transmettre de pointeur à ma methode juste des references...

    J'ai tester ca :

    // Creation de deux points pour tester la methode statique
    	Point *pointA, *pointB;
    	Point & refA, refB;
    	refA = pointA;
    	refB = pointB;
    	pointA = new Point(1.0, 3.0);
    	pointB = new Point(45.1, 15.2);
    	pointA->afficheCoordonnees();
    	pointB->afficheCoordonnees();
    	
    	Point::distanceEntreDeuxPoints(refA, refB);
    	delete pointA, pointB;
    


    mais comme vous vous en doutez ca ne marche pas :-° donc ma question est comment utiliser ma methode ? mon compilateur me dit qu'il n'y a pas d'operateur apte à faire la conversion et j'ai vu qu'on pouvais redefinir les operateurs (mais je n'en suis pas encore la ;) )

    Merci pour vos réponses
    • Partager sur Facebook
    • Partager sur Twitter
    Le développement de jeu vidéo vous intéresse ? Parlons en !
      27 mai 2008 à 20:36:24

      Point::distanceEntreDeuxPoints(*pointA, *pointB);
      

      Normalement cela devrait faire l'affaire

      Mais essaye de mettre plutôt :

      void Point::distanceEntreDeuxPoints(Point & p1, Point & p2);
      

      il y a une subtilité à apprendre entre un paramètre envoyé :
      -Par copie
      -Par référence
      -Par référence constante

      edit : Mince ! Je suis pas avec mon compte, Ici ComteYunlaaw :-°
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        27 mai 2008 à 20:52:36

        Pourquoi utiliser des pointeurs?
        Mauvaise désallocation.
        Mauvaise initialisation de_la référence [ refB n'en est pas une ] .
        Pas const correct.

        > relis les tutoriels.
        > corrige ton code.
        > si tu n'arrives pas à le corriger reviens ici. ;) Mais essaye, tu apprendras plus comme ça.
        • Partager sur Facebook
        • Partager sur Twitter

        Methode static avec parametre par reference

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown