Fonction renvoyant un tableau

Résolu
tomalille Messages postés 52 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 juin 2007 - 16 mai 2006 à 20:46
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 16 mai 2006 à 22:06
Bonjour,

je dois faire une procedure qui doit renvoyer un tableau. Voici ce que j'ai ecrit:


dans le .h

int* retournerTableau(void);


dans le .cpp

int* Graphe::retournerTableau(void)

{

    int i,j;

    int res[nbNoeuds][nbNoeuds];

   

    for(i=0;i<nbNoeuds;i++)

    {

        for(j=0;j<nbNoeuds;j++)

            res[i][j] = 0;

    }

   

    return res;

}


Graphes.cpp: In member function 'int* Graphe::retournerTableau()':

Graphes.cpp:144: error: cannot convert 'int (*)[(((unsigned
int)(((int)((Graphe*)this)->Graphe::nbNoeuds) - 1)) + 1u)]' to
'int*' in return

make: *** [main.o] Error 1

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 mai 2006 à 21:23
Justement le problème c'est que tu essais de renvoyer un tableau. Ce qu'il faudrait faire c'est faire ta fonction comme suit par exemple:

void Graphe::retournerTableau(int destination[][256])
{
    int i,j;
   
    for(i=0;i<nbNoeuds;i++)
    {
        for(j=0;j<nbNoeuds;j++)
            destination[i][j] = 0;
    }
}

___________________________________________
Les plus grands esprits trouvent toujours une solution
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
16 mai 2006 à 22:06
On ne renvoie jamais une donnée locale, c'est écrasé en sortant de la fonction. Il faut faire une alloc et retourner le pointeur.

Ceci dit, comme dit plus haut, le mieux est de recevoir le pointeur tableau et de le faire remplir par la fonction, encore faut-il recevoir aussi le nbr d'éléments à remplir.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous