簡體   English   中英

我不明白如何在 Visual Studio 中修復這個 function

[英]I don't understand how to fix this function in Visual Studio

我在 Visual Studio 中收到以下我不理解的錯誤:

main.cpp(21): error C2440: '=': cannot convert from 'void' to 'char'
main.cpp(21): note: Expressions of type void cannot be converted to other types

這是我的代碼:

void getLetterGrade(double totalAvg, char& letter_Grade)
{
    if (totalAvg >= 90) {
        letter_Grade = 'A';
    }
    else if (totalAvg < 90 && totalAvg >= 80) {
        letter_Grade = 'B';
    }
    else if (totalAvg < 80 && totalAvg >= 70) {
        letter_Grade = 'C';
    }
    else if (totalAvg < 70 && totalAvg >= 60) {
        letter_Grade = 'F';
    }
}

int main()
{
    double totalGrade = 74;
    char letterGRADE;
    letterGRADE = getLetterGrade(totalGrade, letterGRADE);
}

您的 function getLetterGrade返回void ,這意味着“無”。 因此,在賦值的右側使用它是非法的。

這里

letterGRADE = getLetterGrade(totalGrade, letterGRADE);

會導致錯誤,因為它試圖使用 function 的返回值,但沒有。

但是,由於您通過引用傳遞了第二個參數(通過說“char & letter_Grade”),您已經得到了所需的字母。 只需將您的代碼更改為

getLetterGrade(totalGrade, letterGRADE);

你應該沒事的。 當被調用的 function 返回時,變量letterGRADE的值已經更新。

或者,您可以更改 function 以返回字母:

char getLetterGrade(double totalAvg)
{
    char letter_Grade = '?';
    if (totalAvg >= 90)
    {
        letter_Grade = 'A';
    }
    else if (totalAvg < 90 && totalAvg >= 80)
    {
        letter_Grade = 'B';
    }
    else if (totalAvg < 80 && totalAvg >= 70)
    {
        letter_Grade = 'C';
    }
    else if (totalAvg < 70)
    {
        // Anything below 70 is flunked, so no need to give an upper limit (otherwise an average of 50 would not get a mark at all)
        letter_Grade = 'F';
    }
    return letter_Grade;
}

現在你可以這樣調用它,使用返回值:

letterGRADE = getLetterGrade(totalGrade);

暫無
暫無

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

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