错误消息:对'printHeader()'&amp ;;的未定义引用对'calculateArea(double&)'的未定义引用

时间:2013-03-01 19:55:55

标签: function reference undefined

我写了这个程序来计算一个圆圈的区域,它不断给我这个错误信息:“未定义的'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;
}

我正在使用CodeBlocks。非常感谢!

1 个答案:

答案 0 :(得分: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&amp; radius)相同 - 第一个不带参数,第二个需要双引用