我写了这个程序来计算一个圆圈的区域,它不断给我这个错误信息:“未定义的'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。非常感谢!
答案 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)相同 - 第一个不带参数,第二个需要双引用