Fonction renvoyant un tableau [Résolu]

Signaler
Messages postés
52
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
5 juin 2007
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
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++