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 :
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];
	}
Je ne mets cet extrait de code que pour info sur la construction de coefs, il fonctionne en effet très bien.

- une fonction de calcul d'une data à partir de ces coefficients :
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
}
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
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
}
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 :
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 !