Tôi đã làm việc trên một lớp học và bắt đầu viết mọi thứ trong cùng một tệp .cpp. Tuy nhiên, sau một thời gian tôi có thể thấy lớp học ngày càng lớn hơn nên tôi quyết định chia nó thành một tập tin .h và a .cpp.Sử dụng không hợp lệ 'this' trong chức năng không phải là thành viên
gaussian.h file:
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 file:
#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;
}
Tuy nhiên, tôi không thể có được điều này để biên dịch. Tôi cố gắng chạy:
g++ -I. -c -w gaussian.cpp
Nhưng tôi nhận được:
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
Tại sao tôi không thể sử dụng này ?? Tôi đang sử dụng nó trong hàm fromPrecisionMean và biên dịch. Có phải vì hàm đó trả về Gaussian không? Bất kỳ lời giải thích thêm nào cũng sẽ được đánh giá cao, tôi đang cố gắng học nhiều nhất có thể! Cảm ơn!
Ah! Tôi không thể tin rằng tôi không thể nhìn thấy nó! Tôi đã trải qua rất nhiều lần ...! Cảm ơn bạn!! – coconut
Ngoài ra, cảm ơn bạn đã gửi thêm lời khuyên! – coconut