Bonjour,
j'ai appris le C++ il y a bien longtemps et je doit m'y replonger mais j'ai un petit problème avec mon code... Je passe deux tableaux "reel" et "imag", dans la fonction et aimerai que ces deux vecteurs soient remplacer par 2 autres contenant la même information mais dont la taille du tableau est une puissance de 2 (la première puissance au-dessus de la taille d'origine). Dans ma fonction, les vecteurs "reel" et "imag", à la sortie de ma fonction, aucune modification.
code:
j'ai oublier qu'il s'agissait de la fonction preTreat. et donc à l'intérieur tout se passe comme je veux; à l'extérieur tout disparais. J'ai l'impression que le pointeur n'est pas passé par référence... J'ai trouver une réponse qui consiste à rajouter un '&' après le '*' dans la déclaration de la fonction... mais le programme l'accepte pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 float nextPowOfX(float n,float X){ /* return the next power of X greater than the number n */ float result=1.0; if (n==0.0 or X==0.0) { printf("erreur function preTreat in fft.cpp line 65: essaye de trouver une puissance " "de base null ou une valeur nulle. Programme continue avec retour 1"); } else{ result = ceil(log(n)/log(X)); } return result; } void init(float *ma,int n,float *temp=NULL,int lg=NULL){ for (int i=0;i<n;i++){ if (lg==NULL){ ma[i]=0; } else{ if(i<lg){ ma[i]=temp[i]; } else{ ma[i]=0; } } } } void preTreat(float *reel, float *imag,int length){ float nP=nextPowOfX(length,2.0); int lt=(int) pow(2,nP); float *r; float *i; r=new float[lt]; // r[lt]; i=new float[lt]; //i[lt]; init(r,lt,reel,length); init(i,lt,imag,length); reel=r; imag=i; for(int j =0;j<8;j++) { cout<<reel[j]<<" "; } cout<<endl; }
invalid initialization of non-const reference of type 'float*&' from a temporary of type 'float*'.
Partager