【问题标题】:How to return multiple parameter with function prototype [duplicate]如何使用函数原型返回多个参数[重复]
【发布时间】:2016-01-15 01:51:37
【问题描述】:

定义只返回y参数,我只是学习函数原型

#include <iostream>
using namespace std;

    int doDateofBirth(int m , int d , int y);

    int main(){

        cout << "My DoB is, " << doDateofBirth(4,14,1998) << endl;


    }

    int doDateofBirth(int m,int d,int y){
        return m,d,y;
    }

【问题讨论】:

  • 尝试阅读有关逗号运算符的信息,更多内容您可能会考虑创建一个 struct 并返回它。

标签: c++ function


【解决方案1】:

您不能在 C++ 中返回多个对象。

return m,d,y;

它使用逗号运算符,它计算其左侧表达式,丢弃其值,然后返回右侧表达式的值。在这种情况下,就像你写的一样

return y;

你可以创建一个类来表示一个日期,然后返回它:

struct Date {
    //maybe add protection, constructors, methods, etc
    int month;
    int day;
    int year;
};

Date doDateOfBirth (const Date& something);

【讨论】:

  • 感谢您提供此信息!
【解决方案2】:

要返回任意数量,请使用:boost::tuple,用于 C++ 11 及更高版本

http://theboostcpplibraries.com/boost.tuple

【讨论】:

    【解决方案3】:

    在 C++ 中,如果要返回多个变量,请考虑以下选项之一:

    • 将要返回的变量分组到结构或类中,具体取决于对象的大小,并在程序中使用结构/类作为参数
    • 使用参考参数

    根据您的示例,您可以使用引用变量选项:

    原型

    void doDateofBirth(int &m , int &d , &int y);
    

    实施:

    void doDateofBirth(int &m,int &d,int &y){
        // do your coding here
    }
    

    这是调用函数的方式: int 月、日、年; doDateOfBirth(月、日、年);

    【讨论】:

      【解决方案4】:

      通常当您觉得需要返回多个值时,这些值实际上代表了一个更大的整体,您应该使用包含这些值的不同数据类型来表示它。例如:

      struct DateOfBirth
      {
          const int month;
          const int day;
          const int year;
      };
      
      DateOfBirth doDateofBirth(int m, int d, int y){
          return { m, d, y };
      }
      

      doDateofBirth 在这里的行为与构造函数完全一样,所以我们将其设为构造函数:

      struct DateOfBirth
      {
          DateOfBirth(int m, int d, int y) : month(m), day(d), year(y) { } // constructor
          const int month;
          const int day;
          const int year;
      };
      

      然后可以这样使用:

      int main()
      {
          DateOfBirth mybd(666, 42, 69);
          printf("%d/%d/%d\n", mybd.year, mybd.month, mybd.day);
      }
      

      【讨论】:

        猜你喜欢
        • 2019-09-28
        • 1970-01-01
        • 2011-01-20
        • 2011-04-19
        • 1970-01-01
        • 1970-01-01
        • 2017-09-23
        相关资源
        最近更新 更多