方法无法访问同一类的成员变量 (C++)
A method can't access a member variable of the same class (C++)
我写了一个简短的程序来说明我的学校项目的继承原则,但我遇到了一个奇怪的问题。这是我的代码:(我省略了所有不是问题的代码)
class Car
{
protected:
double fuelLevel;
public:
void fuelUp(double);
};
void fuelUp(double fuel)
{
Car::fuelLevel += fuel;
}
这是构建日志:
||=== Build: Debug in wierdError (compiler: GNU GCC Compiler) ===|
||In function 'void fuelUp(double)':|
|4|error: 'double Car::fuelLevel' is protected|
|11|error: within this context|
|4|error: invalid use of non-static data member 'Car::fuelLevel'|
|11|error: from this location|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
我不知道这个错误意味着什么,我希望有人可以帮助我。
该函数应编写为类Car
void Car::fuelUp(double fuel)
{
fuelLevel += fuel;
}
按照您编写它的方式,它无法访问Car
中的任何成员变量,因为它与您在类中声明的函数不同。
void fuelUp(double fuel)
{
Car::fuelLevel += fuel;
}
不是方法。它是与类中声明的方法同名的某个函数。如果 Car::fuelLevel 是类的公共静态数据成员,则此代码可以工作。
在类定义之外定义方法时,应指定该方法所属的类。
void Car::fuelUp(double fuel)
{
Car::fuelLevel += fuel;
}
你
写Car::fuelLevel += fuel
的方式是 triyng 访问可变燃料水平,就好像它是static
一样。 你需要使该变量static
或者,更有可能是你打算做的,是使方法
void Car::fuelUp(double fuel)
{
fuelLevel += fuel;
}
如果它更清楚地说明了原始代码错误的原因,您还可以将其更改为:
void Car::fuelUp(double fuel)
{
this->fuelLevel += fuel;
}
请注意,在第二个变体中,您正在通过 this->
访问该字段,这在第一个版本中隐式发生。 您的版本通过类Car::
访问该字段。
在类外定义函数时,必须将函数引用到某个类。因此,您应该在定义函数之前编写Car
。它必须在表格上void car::fuelUp(double fuel)
相关文章:
- C++交换来自同一类成员的参数值,处理多个类
- 类成员函数无法访问同一类的私有结构节点?
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- 当两个成员位于同一类中时出错"a nonstatic member reference must be relative to a specific object"
- 如何将一个类的成员函数用作另一类的友元函数
- 如何获取同一类函数中类成员的函数指针?
- 从C 中的另一类访问类成员
- 如何将两个类成员函数与同一类中的另一个函数一起添加
- 如何为同一类对象的成员函数保留单独的变量副本?
- 如何将成员函数用于同一类的不同对象
- 如何将数据从公共方法添加到同一类中的私有成员数组中?
- 为什么一个非平凡的成员需要为同一类中的匿名联合定义构造函数
- 如何访问结构和枚举成员形成一类
- 如何在类构造函数内部对同一类的成员函数启动pthread
- 将类成员函数作为参数从同一类的另一个成员函数传递
- C++:按值将对象传递给同一类的成员函数
- 如何从同一类的另一个成员函数调用函子
- 希望静态成员函数调用同一类的成员变量
- 另一类成员函数中另一类的对象
- 一行中对同一类成员的多个访问是否以某种方式进行了优化