Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction membre qui déconne

Sujet résolu
    13 juin 2007 à 1:23:17

    Boujour

    Depuis hier, mon projet ne veut plus se compiler a cause d'erreurs dues a 2 fonctions membres, je sais ce que l'erreur veut dire, mais je comprend vraiment pas pourquoi il me la met puisque tout a l'air bon.
    Voici l'erreur:
    map.cpp:513: error: no matching function for call to `Map::intersectionVecPlan(Vector3D&, Vector3D&, Vertex3D&, Vertex3D&, Vertex3D&, Vector3D*)'
    map.h:36: note: candidates are: bool Map::intersectionVecPlan(Vector3D, Vector3D, Vector3D, Vector3D, Vector3D, Vector3D*)
    map.cpp:514: error: no matching function for call to `Map::inTriangle(Vertex3D&, Vertex3D&, Vertex3D&, Vector3D&;)'
    map.h:37: note: candidates are: bool Map::inTriangle(Vector3D, Vector3D, Vector3D, Vector3D)


    Apparament quand j'appelle ces deux fonctions, il croit que je met des références, ce qui n'est pas le cas.
    Voici mes declarations dans le .h:
    bool intersectionVecPlan(Vector3D,Vector3D,Vector3D,Vector3D,Vector3D,Vector3D *);
    bool inTriangle(Vector3D,Vector3D,Vector3D,Vector3D);

    Et le code qui les appelle:

    Vector3D intersection;
        Vertex3D A, B, C;
        QVector<Face3D> tabFaceTamp;
        QVector<Vertex3D> tabVertTamp;
        for(int i=0; i<m_models.size();i++)
        {
            tabFaceTamp=m_models[i].getTabFaces();
            tabVertTamp=m_models[i].getTabVertex();

            for(int j=0; j<tabFaceTamp.size();j++)
            {
                for(int k=0; k<tabVertTamp.size();k++)
                {
                    if(tabVertTamp[k].ID==tabFaceTamp[j].vertex1)
                    A=tabVertTamp[k];
                    if(tabVertTamp[k].ID==tabFaceTamp[j].vertex2)
                    B=tabVertTamp[k];
                    if(tabVertTamp[k].ID==tabFaceTamp[j].vertex3)
                    C=tabVertTamp[k];
                }


                if(intersectionVecPlan(start,end, A, B, C, &intersection))
                if(inTriangle(A,B,C,intersection))
                {
                    //truc
                }
            }
        }

    start et end sont des variables qui viennent de parametres de la fonction dans laquel on est, A,B et C sont a priori normeaux (et pourtant sont aussi perçus comme reference) et pour intersection, je donne enfait l'adresse d'une variable "normale" en tant que pointeur.

    J'ai même essayé de changer les fonctions pour leur donner des references a bouffer puisque Monsieur le compilateur y tient tant, mais enfait il m'insulte toujours:
    map.cpp:513: error: no matching function for call to `Map::intersectionVecPlan(Vector3D&, Vector3D&, Vertex3D&, Vertex3D&, Vertex3D&, Vector3D*)'
    map.h:36: note: candidates are: bool Map::intersectionVecPlan(Vector3D&, Vector3D&, Vector3D&, Vector3D&, Vector3D&, Vector3D*)
    map.cpp:514: error: no matching function for call to `Map::inTriangle(Vertex3D&, Vertex3D&, Vertex3D&, Vector3D&amp;)'
    map.h:37: note: candidates are: bool Map::inTriangle(Vector3D&, Vector3D&, Vector3D&, Vector3D&amp;)

    ce qui n'a pas trop de sens enfait puisque ça correspond...
    • Partager sur Facebook
    • Partager sur Twitter
      13 juin 2007 à 1:34:51

      Salut.

      Le problème ne vient pas du fait que ce soit des références ou pas, mais plutôt du type des paramètres.

      Dans la déclaration des fonctions, tu indiques tout le temps des paramètres de type Vector3D, alors que lors de l'appel à ces fonctions tu passes des Vertex3D. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        13 juin 2007 à 1:36:42

        je suis vraiment une cruche, merci

        N'empeche qu'il m'a pas aidé le compilateur a m'inventer des references o_O
        • Partager sur Facebook
        • Partager sur Twitter

        fonction membre qui déconne

        × 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