我在将void (*)()
转换为float
时遇到问题。这是我的代码:
#include <iostream>
using namespace std;
void instructions();
void numDays();
void med();
void sur();
void lab();
float room(int days);
float misc(float meds, float surgical, float lab);
float total(float room, float misc);
int main()
{
int days;
float meds;
float surgical;
instructions();
numDays();
med();
sur();
lab();
room( days);
misc(meds, surgical, lab);
total( room, misc);
}
void instructions()
{
cout<<"this program will ask you some questions. After that it will print out all of the users charges and the tital\
amount that is owed. "<<endl;
}
void numDays()
{
float days;
cout<<"Enter in users length of stay. "<<endl;
cin>> days;
}
void med()
{
float meds;
cout<<"Enter int the users medication charges. "<<endl;
cin>> meds;
}
void sur()
{
float surgical;
cout<<"Enter in the users surgical charges. "<<endl;
cin>> surgical;
}
void lab()
{
float lab;
cout<<"Enter in the users lab fees. "<<endl;
cin>> lab;
}
float room(float days)
{
float room;
room = (days*450);
}
float misc(float meds, float surgical, float lab)
{
float misc;
misc = (meds + surgical + lab);
return 0;
}
float total(float room, float misc)
{
float total;
total = (room + misc);
return total;
}
这些是我不断收到的错误消息:
:24: error: cannot convert 'void (*)()' to 'float' for argument `3' to `float misc(float, float, float)'
:25: error: cannot convert 'float (*)(int)' to 'float' for argument `1' to `float total(float, float)'
答案 0 :(得分:3)
例如在本声明中
misc(meds, surgical, lab);
参数lab是一个函数指针。我没有查看你的代码,但也许你的意思是
misc(meds, surgical, lab());
但即使在这种情况下,您也会收到错误,因为函数实验室的返回类型为void。 你似乎不明白自己在做什么。
答案 1 :(得分:2)
在room()
函数中,我假设您忘记了return语句。
total(room, misc);
- 所以,我想您希望得到room
和misc
函数的结果。如果你这样做,这将有效。
float misc = misc(meds, surgical, lab);
float room = room(days);
float total = total(room, misc);
你所拥有的虚空功能没有达到预期的效果。您在这些函数中创建了 local 变量,它们与main
中的变量不同。您可以使这些函数返回输入的结果,然后执行float lab = lab()
。
您的misc
函数始终返回0 - 我相信这不是您所期望的。
一般来说,如果你有函数返回的东西将它分配给一个变量,如2中所示。 - 否则它将不会做任何有用的事情,你将无法重复使用它。
< / LI> 醇>答案 2 :(得分:2)
好的,让我们从头开始吧。像你的例子这样的计算机程序包含两个不同的东西:
在你的程序中,你有两个不同的东西(一个变量和一个函数),它们都被称为med
。这将导致混乱。因此,典型的样式指南建议函数名称在其名称中包含动词,例如read_med
,因此您知道函数应该执行的操作。另一方面,变量名通常是名词,例如med
,days
,total
。
该功能如下所示:
float read_med() { // this is a function (active part)
float med; // and this is a variable (passive part)
cout << "Enter the medication amount: ";
cin >> med;
return med;
}
然后您可以像这样调用此函数:
float med = read_med(); // the round parentheses mean “call the function, run the code”
float days = read_days();
float total = med * days;
cout << "Total: " << total << endl;