在非成员函数中无效使用 'this'
Invalid use of 'this' in non-member function
我处理了一个类,并开始在同一.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;
}
但是,我无法将其编译。我尝试运行:
g++ -I. -c -w gaussian.cpp
但我得到了:
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函数中使用它,该函数正在编译。是因为这个函数返回的是高斯函数吗?任何额外的解释都将不胜感激,我正在尽我所能学习!谢谢
您忘记将absoluteDifference
声明为Gaussian
类的一部分。
更改:
double absoluteDifference (Gaussian aux){
到此:
double Gaussian::absoluteDifference (Gaussian aux){
旁注:最好通过引用而不是通过值:
double Gaussian::absoluteDifference (const Gaussian &aux){
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 为什么使用 "this" 指针调用派生成员函数?
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 无法访问嵌套类.类的使用无效
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- C++错误:"error: int aaa::bbb is protected within this context"
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 我可以将调用类的"this"传递给 lambda 函数吗?
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- FFMPEG配置文件级别id大小无效
- 错误:从"int"到枚举c++的转换无效
- 如何修复此错误:className::className的无效使用
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 'this'问题不大(在非成员函数中无效使用'this')
- 默认参数:在非静态成员函数之外无效使用'this'
- CC_SYNTHESIZE(int, beadColor, _BeadColor);在非静态成员函数之外无效使用'this'
- MinGW 4.7.0 到 4.7.2 错误:使用混合虚拟和非虚拟多重继承时成员函数中的"this"指针无效
- C++ 在非成员函数中无效使用 'this'
- 在非成员函数中无效使用 'this'