Tenía trabajando en una clase y comencé a escribir todo en el mismo archivo .cpp. Sin embargo, después de un tiempo pude ver que la clase se hacía cada vez más grande, así que decidí dividirla en .h y en archivo .cpp.Uso no válido de 'esto' en la función no miembro
archivo gaussian.h: archivo
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:
#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;
}
Sin embargo, no puedo conseguir esto para compilar. Trato de ejecutar:
g++ -I. -c -w gaussian.cpp
pero me sale:
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
Por qué no puedo usar esto ?? Lo estoy usando en la función fromPrecisionMean y eso se compila. ¿Es porque esa función devuelve un gaussiano? Cualquier explicación adicional será realmente apreciada, ¡estoy tratando de aprender todo lo que pueda! ¡Gracias!
Ah! ¡No puedo creer que NO pudiera verlo! ¡Lo he pasado tantas veces ...! ¡¡Gracias!! – coconut
¡Además, gracias por el consejo adicional! – coconut