gpt4 book ai didi

C++ 标识符未定义

转载 作者:行者123 更新时间:2023-12-02 03:28:45 25 4
gpt4 key购买 nike

我是 C++ 新手,我不明白为什么会出现此错误。 5 个类似的语句中有 3 个标记为错误,但其他两个没有问题。错误出在主函数中。

    #include <iostream>
using namespace std;

// Function declaration
void getGallons(int wall);
void getHours(int gallons);
void getCostpaint(int gallons, int pricePaint);
void getLaborcharges(int hours);
void getTotalcost(int costPaint, int laborCharges);

// Function definition
void getGallons(int wall)
{
int gallons;

gallons = wall / 112;

cout << "Number of gallons of paint required: " << gallons << endl;


}

// Function definition
void getHours(int gallons)
{
int hours;

hours = gallons * 8;

cout << "Hours of labor required: " << hours << endl;


}

// Function definition
void getCostpaint(int gallons, int pricePaint)
{
int costPaint;

costPaint = gallons * pricePaint;

cout << "The cost of paint: " << costPaint << endl;
}

// Function definition
void getLaborcharges(int hours)
{
int laborCharges;

laborCharges = hours * 35;

cout << "The labor charge: " << laborCharges << endl;
}

// Funtion definition
void getTotalcost(int costPaint, int laborCharges)
{
int totalCost;

totalCost = costPaint + laborCharges;

cout << "The total cost of the job: " << totalCost << endl;
}

// The main method
int main()
{
int wall;
int pricePaint;

cout << "Enter square feet of wall: ";
cin >> wall;

cout << "Enter price of paint per gallon: ";
cin >> pricePaint;

getGallons(wall);

getHours(gallons); // error here

getCostpaint(gallons, pricePaint);

getLaborcharges(hours); // error here

getTotalcost(costPaint, laborCharges); //error here

return 0;

}

本课重点介绍在代码中使用函数和传递参数。我不应该使用全局变量。如果您有更好的方法,请分享。

最佳答案

减少到三行(其他错误类似):

int wall;    
getGallons(wall);
getHours(gallons); // error here

虽然定义了wall,但未定义gallons。您想从哪里获得加仑?结果隐藏在另一个函数的深处。你想如何把它从那里取出来?

好吧,你需要一个返回值:

  int getGallons(int wall)
//^^^ !
{
int gallons = wall / 112;
// ...
return gallons; // !
}

这样,您就可以像这样使用您的函数:

int gallons = getGallons(wall);
// now gallons is defined and you can use it:
getHours(gallons);

其他函数和变量也类似。

通常,在同一个函数中混合逻辑(计算)和输出不是一个好主意。所以我宁愿将对控制台的写入移至 main 函数中:

int getGallons(int wall) { return wall / 112; }
int getHours(int gallons) { return gallons * 8; }

int wall;
std::cin >> wall;
int gallons = getGallons(int wall);
std::cout << ...;
int hours = getHours(gallons);
std::cout << ...;

通知?现在所有输入/输出都处于同一水平...

旁注:如果在定义之前不使用函数,则无需在定义函数之前声明它们:

//void f(); // CAN be ommitted
void f() { };
void g() { f(); }

反例:

void f();
void g() { f(); } // now using f before it is defined, thus you NEED do declare it
void f() { };

如果您仍然想保留声明,则属于风格问题(但在管理不同编译单元中的代码时会变得很重要,因为您将在头文件中包含声明 - 您将在下一课中很快遇到)。

关于C++ 标识符未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58212508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com