Utilisation invalide de 'cette' non-membre de la fonction
J'ai eu à travailler sur une classe et a commencé à écrire tout de même .fichier cpp. Cependant, après un certain temps, j'ai pu voir la classe devient de plus en plus donc j'ai décidé de le diviser en un .h et un .fichier cpp.
gaussien.h fichier:
class Gaussian{
private:
double mean;
double standardDeviation;
double variance;
double precision;
double precisionMean;
public:
Gaussian(double, double);
~Gaussian();
double normalizationConstant(double);
Gaussian fromPrecisionMean(double, double);
Gaussian operator * (Gaussian);
double absoluteDifference (Gaussian);
};
gaussian.cpp fichier:
#include "gaussian.h"
#include <math.h>
#include "constants.h"
#include <stdlib.h>
#include <iostream>
Gaussian::Gaussian(double mean, double standardDeviation){
this->mean = mean;
this->standardDeviation = standardDeviation;
this->variance = sqrt(standardDeviation);
this->precision = 1.0/variance;
this->precisionMean = precision*mean;
}
//Code for the rest of the functions...
double absoluteDifference (Gaussian aux){
double absolute = abs(this->precisionMean - aux.precisionMean);
double square = abs(this->precision - aux.precision);
if (absolute > square)
return absolute;
else
return square;
}
Cependant, je ne peux pas obtenir ce pour compiler. J'ai essayer de l'exécuter:
g++ -I. -c -w gaussian.cpp
Mais j'obtiens:
gaussian.cpp: In function ‘double absoluteDifference(Gaussian)’:
gaussian.cpp:37:27: error: invalid use of ‘this’ in non-member function
gaussian.h:7:16: error: ‘double Gaussian::precisionMean’ is private
gaussian.cpp:37:53: error: within this context
gaussian.cpp:38:25: error: invalid use of ‘this’ in non-member function
gaussian.h:6:16: error: ‘double Gaussian::precision’ is private
gaussian.cpp:38:47: error: within this context
Pourquoi ne puis-je l'utiliser?? Je l'utilise dans le fromPrecisionMean fonction et qui compile. Est-ce parce que cette fonction renvoie une Gaussienne? Toute explication supplémentaire sera vraiment apprécié, je suis en train d'apprendre autant que je peux! Merci!
OriginalL'auteur coconut | 2012-01-28
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié de déclarer
absoluteDifference
dans le cadre de laGaussian
classe.Changement:
:
Note de côté: Il pourrait être préférable de passer par référence plutôt que par valeur:
Aussi, merci pour le morceau de conseils!!!
OriginalL'auteur Mysticial