Получить функцию, которая "получает" другие функции получения - PullRequest
1 голос
/ 23 апреля 2019

Итак, моя задача: создать функцию, которая получает все параметры от других функций get, например:

int get_day() const {return day;}
int get_month() const {return month;}
int get_year() const {return year;}

Я хочу get_date(), которая получает все вышеперечисленные get.Как я могу это сделать?Например:

int get_date() const {
   get_day();
   get_month();
   get_year();
}

Ответы [ 3 ]

2 голосов
/ 23 апреля 2019

Вы можете упаковать дату следующим образом:

int get_date() const {
    return get_day() + 100 * get_month() + 10000 * get_year();
}

Обратите внимание, что это просто целое число, которое выглядит как дата.Если вы напечатаете сегодняшнюю дату, это будет число 20190423, а это просто число 20 190 423.

1 голос
/ 23 апреля 2019

вы можете использовать tm struct как здесь: std :: tm

std::time_t t = std::time(0);
std::tm* now = std::localtime(&t);
std::cout << (now->tm_year + 1900) << (now->tm_mon + 1) <<  (now->tm_mday);

не изобретай велосипед

1 голос
/ 23 апреля 2019

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

#include <iostream>
#include <array>

struct Cal
{
    typedef std::array<int,3> Date;

    int day = 13;
    int month = 7;
    int year = 2019;

    int getDay() const
    {
        return day;
    }
    int getMonth() const
    {
        return month;
    }
    int getYear() const
    {
        return year;
    }

    Date getDate() const
    {
        return {{getDay(),getMonth(),getYear()}};
    }
};


int main()
{
    Cal c;

    for (auto &&i : c.getDate())
        std::cout<< i <<" ";
    std::cout<<std::endl;
}

Код выводится:

13 7 2019 

Кроме того, будет лучше, если вы просто вернете фактические члены вместо вызова функций получения. Помимо функции getDate() также является членом класса.

Date getDate() const
{
    return {{day,month,year}};
}

Пример кода онлайн: https://rextester.com/WPXX24681

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...