Ho lavorato su una classe e ho iniziato a scrivere tutto nello stesso file .cpp. Tuttavia, dopo un po 'ho potuto vedere la classe diventare sempre più grande quindi ho deciso di dividerlo in un file .h e .cpp.Uso non valido di "this" nella funzione non membro
lima gaussian.h: file di
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;
}
Tuttavia, non può ottenere questo per compilare. Provo a correre:
g++ -I. -c -w gaussian.cpp
ma ottengo:
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
Perché non posso usare questo ?? Lo sto usando nella funzione fromPrecisionMean e che compila. È perché quella funzione restituisce un gaussiano? Ogni spiegazione in più sarà molto apprezzata, sto cercando di imparare il più possibile! Grazie!
ah! Non posso credere di non poterlo vedere! L'ho passato così tante volte ...! Grazie!! – coconut
Inoltre, grazie per il consiglio in più! – coconut