Мне нужна была помощь по ссылочным параметрам с моим кодом на C++

Я изучаю ООП и не знаю, как правильно использовать эталонные параметры.

Я пытаюсь вернуть значения месяца, дня и года из функция. Мне сказали использовать ссылочные параметры, чтобы присвоить им предыдущее значение, но я не понимаю, что мне нужно сделать, чтобы вернуть три значения месяца, дня и года в функция.

Это вопрос, который был задан:

НАБОР НАВЫКОВ: Создание и тестирование класса

Вы создадите проект с несколькими файлами: date.h, date.cpp и ваш файл «app» с main.

Создайте класс Date. Атрибуты даты - это три целых числа, которые представляют месяц, день и год. Вы будете реализовывать функции, описанные ниже. Определение вашего класса ДОЛЖНО БЫТЬ СЛЕДУЮЩИМ (НЕ МЕНЯЙТЕ ИМЕНА ФУНКЦИЙ). Это идет в date.h. НЕ используйте определения встроенных функций.

       class Date
{
    private:
        int month, day, year;
    public:
        Date(); 
        Date(int, int, int);
        bool setDate(int, int, int);
        void getDate(int&, int&, int&);
        void printShort();
        void printLong();
        bool isEqual(Date);
        void increment();
        void decrement();
};

Теперь закодируйте все функции в date.cpp.

Описание функций:

конструктор по умолчанию

назначает дату по умолчанию 01.01.2000 (месяц на 1, день на 1, год на 2000)

параметризованный конструктор с параметрами m, d, y

(т.е. Date mydate (7, 30, 2007); установит дату на 30/07/2007) Должен подтверждать и использовать дату по умолчанию, если ввод неверен.

setDate

Установите значения месяца, дня, года. Включите проверку: не принимайте значения для дня больше 30 или меньше 1. Не принимайте значения для месяца больше 12 или меньше 1. Верните значение типа bool, чтобы указать, действительны ли данные.

getDate

Возвращает ВСЕ ТРИ значения месяца, дня, года (вам потребуются справочные параметры)

printShort

напечатайте дату как мм / дд / гг (т.е. 02/05/03) (обратите внимание на 2 цифры для месяца, дня, года) (ПОДСКАЗКА: найдите setFill, это может быть полезно)

printLong

напечатайте дату как месяц дд, гггг (т.е. 25 декабря 2003 г.)

равно

проверяет, равны ли два объекта даты. Возвращает истину или ложь.

приращение

добавляет 1 к дню. При необходимости измените месяц и / или год. (т.е. когда вы увеличиваете 30.06.2007, вы должны получить месяц 7, день 1, год 2007) *

декремент

вычитает 1 из дня. При необходимости измените месяц и / или год. (т.е. когда вы уменьшаете 1/1/2007, это становится 30/12/2006) *

* Вы можете предположить, что во всех месяцах есть 30 дней, чтобы упростить алгоритм. Для дополнительного удовольствия правильно обрабатывайте дни каждого месяца (на самом деле это не так уж сложно, но вам нужно подумать о том, как это сделать, прежде чем вы просто начнете его кодировать методом грубой силы).

Вот мой код:

      #include <iostream>
#include "date.h"
using namespace std;


//create a function that will set the date 
bool Date::setDate(int d, int mon, int yer)
{
    //if day is greater than 30/ less that 1 (BAD DATA)
    if (d > 30 || d < 1)
        return false;
    //if month is greater than 12 or less than 1 (BAD DATA)
    if (mon > 12 || mon < 1)
        return false;
    //store day and month into private variable length
    day = d;
    month = mon;
    return true;

}

void getDate(int&d , int& mon,int& yer)
{
    //this function will use reference parameters
    //we need to return all THREE values together
    //use & operator to pass
    d = 10;
    mon = 11;
    yer = 2000;

    
}

И это файл, который включает :

      #include <iostream>
#include "date.h"

int main()
{
    //create an object/ BOX
    Date box;
}

Вместе с файлом .h

      #pragma once
#include <iostream>
using namespace std;

// This header file holds the class and its functions
class Date
{
private:
    int month, day, year;
public:
    //Date();
   //Date(int, int, int);
    bool setDate(int, int, int);
    void getDate(int&, int&, int&);
    //void printShort();
    //void printLong();
    //bool isEqual(Date);
    //void increment();
   //void decrement();
};

0 ответов

Другие вопросы по тегам