0

我编写了这个程序来计算圆的面积,它一直给我这个错误消息:“未定义对'printHeader()的引用和对'calculateArea(double&)'的未定义引用”

我无法弄清楚这意味着什么!我到处都看过,包括这个网站,但大多数答案都超出了我的想象。

程序:

#include <iostream>
using namespace std;

// Aquire radius value
// Postcondition: print out header and return radius value
double printHeader();

// Precondition: radius has been entered
// Postcondition: calculate and print out area of the circle
void calculateArea(double& radius);

int main()
{
    double area=0.0, radius=0.0;
    printHeader();
    calculateArea(radius);
    return 0;
}

double printHeader(double& radius)
{
    cout << "Program for calculating the area of a circle" << endl;
    cout << "Enter the radius of the circle: ";
    cin >> radius;
    return radius;
}

void calculateArea(double& radius, double area)
{
    double PI=3.14159;
    area = (PI*radius*radius);
    cout << "The area of the circle is: " << area << endl;
}

我正在使用代码块。非常感谢!

4

1 回答 1

0

这个错误是编译器告诉你你声明了一些没有定义的函数。如果您查看函数原型:

// Aquire radius value
// Postcondition: print out header and return radius value
double printHeader();

// Precondition: radius has been entered
// Postcondition: calculate and print out area of the circle
void calculateArea(double& radius);

然后看你后面定义的函数:

double printHeader(double& radius) { ... }

void calculateArea(double& radius, double area) { ... }

你可以看到你没有定义你有原型的函数——参数的数量是不同的!编译器根据函数的作用域和参数来识别函数。您需要更新前向声明以在定义中包含参数:

double printHeader(double& radius);
void calculateArea(double& radius, double area);

另一种描述方式是函数 double printHeader()函数 double printHeader(double& radius) 不同 - 第一个不带参数,第二个需要双重引用。

于 2013-03-01T20:01:03.417 回答