C++ 无效使用';这';在非成员函数中

C++ 无效使用';这';在非成员函数中,c++,compiler-errors,this,non-member-functions,C++,Compiler Errors,This,Non Member Functions,我开始在一个类上工作,并开始在同一个.cpp文件中编写所有内容。然而,过了一段时间,我看到这个类越来越大,所以我决定把它分成一个.h和一个.cpp文件 gaussian.h文件: class Gaussian{ private: double mean; double standardDeviation; double variance; double precision; double precisionM

我开始在一个类上工作,并开始在同一个.cpp文件中编写所有内容。然而,过了一段时间,我看到这个类越来越大,所以我决定把它分成一个.h和一个.cpp文件

gaussian.h文件:

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;
}
但我得到:

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

为什么我不能用这个??我在fromPrecisionMean函数中使用它,它编译。是因为这个函数返回一个高斯函数吗?任何额外的解释都将不胜感激,我正在尽可能多地学习!谢谢

您忘记将
绝对差异
声明为
高斯
类的一部分

更改:

double absoluteDifference (Gaussian aux){
为此:

double Gaussian::absoluteDifference (Gaussian aux){

旁注:通过引用传递可能比通过值传递更好:

double Gaussian::absoluteDifference (const Gaussian &aux){

啊!!真不敢相信我竟然看不见!我经历了很多次。。。!非常感谢。
double Gaussian::absoluteDifference (const Gaussian &aux){