N'essaierais tu pas, par hasard, de retourner une variable locale ? Si c'est le cas, ne t'étonne pas si ça ne fonctionne pas. Un variable locale est "éffacé" au retour de la fonction.
Ah et aussi, tab = valeur est impossible. On ne peut pas assigner une valeur à un tableau en entier. tab devra être un pointeur (ou pointeur de pointeurs dans ton cas) pour pointer sur la zone mémoire renvoyé par la fonction.
si tu veux recuperer un tableau de double il faut que tu retourne un pointeur sur une zone memoire que tu aloue dans ta fonction e que tu libere par la suite.
Un snippet, c'est un bout de code que l'on peut réutiliser dans ses codes.
La solution est d'allouer la mémoire dynamiquement et de renvoyer le pointeurs. TableauDeDouble sera alors un pointeur de pointeurs double (double**).
Une autre solution est d'allouer la mémoire en dehors et de passer l'adresse en paramètre de ta méthode. Tu ne seras, ainsi, pas obligé de faire appel à new et delete.
Sinon, ça fera, au moins, un code bien plus clair.
Si tu n'as rien compris de ce que je vien d'expliquer, inutile d'aller plus loin. Ouvre un livre de C++ et essais de bien maitriser les concepts de mémoire et pointeurs (qui sont d'ailleurs très lié) avant.
Bon deja, donnes nous un peu plus de code, car on y comprend rien.
Deuxième point, faut pas écouter tout ce qu'on te dit. Un tableau de double alloué dans une fonction, ca se retourne au type (double*). 3 solutions plus ou moins élégantes selon les gouts pour retourner un tableau 1D de double.
En C/C++:
double * RetourneDouble(int _n)
{
double * mon_tableau = new double[n];
return mon_tableau;
}
En C/C++:
void RetourneDouble(double ** _ptr, int _n)
{
*_ptr = new double[_n];
}
En C++ uniquement:
void RetourneDouble(double * & _ptr)
{
_ptr = new double[_n];
}
Un tableau 2D de N*P double, c'est un tableau 1D de N*P cases:
double * RetourneTableau2D(int largeur, int longueur)
{
double * mon_tableau_2D = new double[largeur*longueur];
mon_tableau_2D[0 * longueur + 0] = 0.0; // <=> point (0,0) du tableau
mon_tableau_2D[1 * longueur + 2] = 0.0; // <=> point (2,1) du tableau