0

我在转换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)'
4

3 回答 3

3

例如在这个声明中

misc(meds, surgical, lab);

参数实验室是一个函数指针。我没有查看您的代码,但也许您的意思是

misc(meds, surgical, lab());

但是,即使在这种情况下,您也会收到错误,因为函数 lab 的返回类型为 void。看来你不明白你在做什么。

于 2013-11-04T23:38:14.667 回答
2
  1. 在你的room()函数中,我假设你忘记了 return 语句。

  2. total(room, misc);- 所以,在这里我想你希望得到你的roommisc函数的结果。如果你这样做,这将起作用

    float misc = misc(meds, surgical, lab);
    float room = room(days);
    float total = total(room, misc);
    
  3. 您拥有的 void 功能没有达到您的预期。您在这些函数中创建局部变量,它们与您在main. 您可以使这些函数返回输入的结果,然后执行float lab = lab().

  4. 你的misc函数总是返回 0 - 我相信这不是你所期望的。

  5. 通常,如果您有返回某些内容的函数,则将其分配给变量,如 2 所示。 - 否则它不会做任何有用的事情,您将无法重用它。

于 2013-11-04T23:36:50.023 回答
2

好的,让我们从头开始。像您的示例这样的计算机程序包含两个不同的东西:

  1. 功能:它们是活动的,当它们被调用时它们会做一些事情。
  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;
于 2013-11-04T23:56:38.300 回答