簡體   English   中英

方法無法訪問同一個類的成員變量(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任何成員變量,因為它與您在類中聲明的函數不同。

你寫它的方式Car::fuelLevel += fuel是triyng來訪問變量fuelLevel,好像它是static 您需要將該變量設為static或者更可能是您打算做的,就是制作該方法

void Car::fuelUp(double fuel)
{
    fuelLevel += fuel;
}

如果它更清楚地說明原始代碼錯誤的原因,您還可以將其更改為:

void Car::fuelUp(double fuel)
{
    this->fuelLevel += fuel;
}

請注意,在第二個版本中,您通過this->訪問該字段,這隱含在第一個版本中。 您的版本讓它通過Car::類訪問該字段。

這個

void fuelUp(double fuel)
{
    Car::fuelLevel += fuel;
}

不是一種方法。 它是一些函數,與類中聲明的方法具有相同的名稱。 如果Car :: fuelLevel是該類的公共靜態數據成員,則此代碼可以工作。

在類定義之外定義方法時,應指定方法所屬的類。

void Car::fuelUp(double fuel)
{
    Car::fuelLevel += fuel;
}

在類外定義時,必須將函數引用到某個類。 所以你應該在定義函數之前編寫Car 它必須是在形式void car::fuelUp(double fuel)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM