Bonjour à tous,
J'ai un soucis avec un code qui, j'ai l'impression, est pourtant tout bête...
Voilà l'idée : j'ai 2 fichiers séparés.
Le fichier 1 comporte 2 fonctions :
- une fonction de création d'un tableau de coefficients :
Je ne mets cet extrait de code que pour info sur la construction de coefs, il fonctionne en effet très bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 double* init_scale(int Ncol, ...) { double *coefs = new double [Ncol*2]; // Remplissage du tableau coefs for (j=0;j<Ncol;j++) { coefs[2*j] = (b-a)/(xmax - xmin); coefs[2*j+1] = a - xmin * coefs[2*j]; }
- une fonction de calcul d'une data à partir de ces coefficients :
Dans mon deuxième fichier, j'ai plusieurs fonctions dont notamment la fonction main(...) et une fonction qui fait appel à scale(...) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void scale(double* data, int ind, double* coefs) { data = coefs[2*ind] * data + coefs[2*ind+1]; // Ligne où a été détecté une erreur par le compilateur }
Je veux donc passer mon tableau de coefs à la fonction scale pour qu'elle modifie la valeur de fbuff (qui est donc passé comme pointeur). Or, quand j'essaye de compiler, j'obtiens l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void predict(double* coefs, ...) { int ind = 0; double fbuff = 0.; // Boucle sur ind // Donne une valeur non nulle à fbuff, puis : scale(&fbuff,ind,coefs); // Utilisation de fbuff, fin du code }
error C2297: '*' : non conforme, l'opérande droit est du type 'double *'
J'ai cherché mais je ne vois pas où est l'erreur dans mon code... Merci de m'aider à y voir plus clair !
Partager