我正在尝试在我的函数中使用指针,然后从我的主体调用该函数。当我试着打电话时,我得到了这两个错误&#39 ;; "对字符串输出的未定义引用,这是由我调用stringOutput()的行引起的;功能和另一个错误是" Id返回1退出状态。"我不确定为什么会发生这些错误。
void stringOutput(int dayNumber, double *ptrTemperatures);
int main()
{
int dayNumber;
double fahrenheit = 0;
double cTemperature = 0;
const double MAXIMUM_TEMPERATURE = 60;// constants for mix/max
const double MINIMUM_TEMPERATURE = -90 ;
const int MAXIMUM_DAYS = 365;
const int MINIMUM_DAYS = 1;
double *ptrTemperatures = NULL;
cout << "How many days would you like to enter? ";
dayNumber = myValidation::GetValidInteger(MINIMUM_DAYS, MAXIMUM_DAYS);
try
{
ptrTemperatures = new double[dayNumber];
}
catch(exception e)
{
cout << "Failed to allocate memory: " << e.what() << endl;
}
cout << "\n\nTEMPERATURE REPORTER\n____________________________\n Please Enter the temperature for each day.";
for(int dayCount = 0; dayCount < dayNumber; dayCount++){
cout << "Celsius Temperature for Day " << (dayCount + 1) << ": ";
ptrTemperatures[dayCount] = myValidation::GetValidDouble(MINIMUM_TEMPERATURE, MAXIMUM_TEMPERATURE);
}
stringOutput();
delete[] ptrTemperatures;
return 0;
}//end main
void stringOutput(int dayNumber, double *ptrTemperatures)
{
cout << "DAILY TEMPERATURE REPORT\n__________________________________-\n\n";
for(int dayCounter = 0; dayCounter < dayNumber; dayCounter++)
{
cout << "Day " << dayCounter << (dayCounter+1) << setw(10) << celsiusToFahrenheit(ptrTemperatures[dayCounter]) << (char(248)) << "F"
<< setw(10) << ptrTemperatures[dayCounter] << (char(248)) << "C" << endl;
}
}
答案 0 :(得分:1)
猜测一下,你的代码大致如下:
void stringOutput();
int main()
{
…
stringOutput();
}
void stringOutput(int dayNumber, double *ptrTemperatures)
{
…
}
您的main
函数使用您在上面声明的stringOutput
函数,但该函数从未在任何地方定义,因此错误。
在main
下方,您声明并定义了stringOutput
的单独重载,它有两个参数而不是无。
如果您想使用main
下面的功能,则需要在main
之前声明:
void stringOutput(int dayNumber, double *ptrTemperatures);
int main()
…
你还需要给它所需的参数,而不是什么都不给它:
int main()
{
…
stringOutput(dayNumber, ptrTemperatures);
}