从函数中获取多个值

时间:2011-10-19 21:29:14

标签: c++

  

可能重复:
  Returning multiple values from a C++ function

/************************************************/
/* Name: premserv                               */
/* Description: Calculations for premium serv   */
/* Parameters: N/A                              */
/* Return Value: premserv                       */
/************************************************/

float premserv ()
{
  int daymin = 0;         //Var for day minutes
  int nightmin = 0;       //Var for night minutes
  float daytotal = 0;     //Var for day total
  float nighttotal = 0;   //Var for night total
  float premserv = 0;     //Var for premium service cost

  cout << "\n" << "Please enter the number of minutes used durring the day (6AM - 6PM): " << "\n";
  cin >> daymin;
  cout << "\n" << "Please enter the number of minutes used durring the night (6PM - 6AM): " << "\n";
  cin >> nightmin;

  daytotal = (daymin - 75) * 0.1;
  nighttotal = (nightmin - 100) * 0.05;
  premserv = 25 + daytotal + nighttotal;

  return premserv;

}

我需要从函数中获取daymin,nightmin和premserv的值。我只知道如何从函数中获得1个值。

6 个答案:

答案 0 :(得分:8)

创建一个包含所有三个浮点数的结构,并返回该结构而不是单个浮点数。

答案 1 :(得分:3)

您可以使用references

float premserv (int& daymin, int& nightmin)
{
     float daytotal = 0;     //Var for day total
     float nighttotal = 0;   //Var for night total
     float premserv = 0;     //Var for premium service cost

     cout << "\n" << "Please enter the number of minutes used durring the day (6AM - 6PM): " << "\n";
     cin >> daymin;
     cout << "\n" << "Please enter the number of minutes used durring the night (6PM - 6AM): " << "\n";
     cin >> nightmin;

     daytotal = (daymin - 75) * 0.1;
     nighttotal = (nightmin - 100) * 0.05;
     premserv = 25 + daytotal + nighttotal;

     return premserv;
}

这将直接修改dayminnightmin的值,您仍然可以将premserv保留为返回值(因为它符合函数名称,我猜)。

你会这样使用它:

int daymin = 0;
int nightmin = 0;
float premiumservice = premserv(daymin, nightmin);

答案 2 :(得分:1)

在c中,创建一个结构来保持上述3个值。在c ++中创建一个类并返回该类的对象。

答案 3 :(得分:1)

float premserv(int& daymin, int& nightmin) { 
    float daytotal = 0;     //Var for day total    
    float nighttotal = 0;   //Var for night total    
    float premserv = 0;     //Var for premium service cost    
    // etc...

'premserv'已被退回。

答案 4 :(得分:1)

除了使用参数或定义特定的结构返回类型之外的另一个选择是使用来自C ++ 11或TR1的元组:

/* Return Value: tuple<daymin,nightmin,premserv>   */
/***************************************************/

std::tuple<int,int,float> premserv ()
{
  // ...
  return std::make_tuple(daymin, nightmin, premiumservice);
}

然后你可以像这样使用它:

int daymin, nightmin;
float premiumservice;
std::tie(daymin,nightmin,premiumservice) = premserv();

或者,如果您只关心其中一个值:

int nightmin = std::get<1>(premserv());

答案 5 :(得分:0)

你得到了multipel答案,但是你可以在函数参数中返回struct,这样你就有一个对象可以处理,返回值会告诉你数据是否有效。

struct
{
   float premserv;
   int daymin;
   int nightmin;

} data;

bool premserv (data & my_data)
{
   // ...
}

if( premserv(my_data) == true )
{
  // user the data
}