2015-10-16 4 views
0

Определение только возвращение у параметров, я только учусь прототип функцииКак вернуть несколько параметров с прототипом функции

#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; 
    } 
+0

Try чтения об операторе запятой, более того, вы можете подумать о создании 'struct' и его возврате. – user007

ответ

5

Вы не можете вернуть несколько объектов на 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); 
+0

за эту информацию! –

0

В C++, если вы хотите вернуть несколько переменных рассмотрим один из следующих вариантов:

  • Группа те переменные, которые вы хотите, чтобы вернуться в структуры или класса, зависит от того, насколько велик ваш объект и использовать структуры/класса в качестве параметра в программе
  • Используйте опорных параметры

Основываясь на вашем примере, вы можете использовать эталонный переменный вариант:

Прототип

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

Реализация:

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

Это, как вы называете функция: int месяц, день, год; doDateOfBirth (месяц, день, год);

0

Обычно, когда вы чувствуете необходимость возврата нескольких значений, эти значения фактически представляют собой большее целое, которое вы должны представлять с отдельным типом данных, содержащим эти значения. Например:

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); 
}