2009-10-06 9 views
1

J'ai besoin de combiner ces deux fonctions. et ont besoin d'aide dans la:Aide combinant deux fonctions en C++

int Triangle(GzRender *render, int numParts, GzToken *nameList,GzPointer *valueList) 
{  
    if (on_screen) 
     {  
      return Position(render, pos); 
     } 
} 



int Position(GzRender *render, GzCoord vertexList[3]) 
    { 
    GzCoord *pv[3]; 
    int i,j; 
    pv[0] = &vertexList[0]; 
pv[1] = &vertexList[1]; 
pv[2] = &vertexList[2];   

    //more function code in here 
    } 

Quelqu'un peut-il me aider.

Cordialement

+0

Pas une vraie question? Citation requise. –

+0

Fermé? Parce que vous pensez que c'est un devoir? –

+1

C'est une question de débutant, que ces gars-là n'aiment peut-être pas. Mais c'est une vraie question. PAS une bonne raison pour la fermeture. –

Répondre

3

Normalement, la séparation des fonctions est une meilleure, une pratique plus courante (et l'une des principales tâches au cours de refactoring). Cela étant dit, vous pouvez « combiner » ceux-ci simplement en faisant:

int Triangle(GzRender *render, int numParts, GzToken *nameList,GzPointer *valueList) 
{  
    if (on_screen) 
    {  
     //function code in here, working on "pos" instead of vertexList 

     // return value 
    } 
    // return some other value here? 
} 
+0

J'ai fait quelques changements de plus dans ma deuxième position de fonction(). Quand j'ai fait ce que vous m'avez dit, j'ai une erreur "vertexList": identificateur non déclaré " –

+0

C'est pourquoi je l'ai mentionné. Vous aurez besoin de remplacer "vertexList" par "pos" partout là-bas, puisque vous passiez pos avant. –

+0

Merci. Ça marche. –

1

La première affiche (Reed Copsey) est correct sur le fait qu'il est généralement préférable de garder les fonctions distinctes.

Avez-vous envisagé d'utiliser la directive inline?

http://www.codersource.net/cpp_tutorial_inline_functions.html

Techniquement, il est seulement un «indice de compilateur, mais vous pouvez l'essayer. Ce qu'il fait est de dire au compilateur que vous souhaitez inclure le corps de la méthode dénommée inline dans toutes les autres méthodes qui l'appellent. Il est préférable d'un point de vue de la maintenance, et devrait atteindre ce que vous visez sans les maux de tête du codage «copier-coller».

int Triangle(GzRender *render, int numParts, GzToken *nameList,GzPointer *valueList) 
{  
    if (on_screen) 
     {  
      return Position(render, pos); 
     } 
} 



inline int Position(GzRender *render, GzCoord vertexList[3]) 
{ 
     //function code in here 
} 
+0

J'ai effectué quelques modifications supplémentaires dans ma deuxième position de fonction(). Quand j'ai fait ce que tu m'as dit, j'ai une erreur "'vertexList': identificateur non déclaré" –

0

Retournez-les s'ils ne compilent pas. Mettez "Position" devant "Triangle"