Перегруженные функции - PullRequest
0 голосов
/ 01 мая 2020

Итак, у меня есть 3 функции:

void bookings(const std::string name, const Date& date)const;
void bookings(const std::string name)const;
void bookings(const Date& date)const;

Я хочу использовать их 3 разными способами. Во-первых, если я передам имя и дату, чтобы использовать первую функцию. Второе, если я передаю только имя, чтобы использовать вторую функцию, и если я передаю только дату, чтобы использовать третью функцию. Я использую консоль для передачи аргументов. Есть ли способ сделать это? Я пишу это:

std::string event, name;
        int d, m, y;
        std::cout << "event: ";
        std::getline(std::cin, event);
        std::cout << "date: ";
        std::cin >> d >> m >> y;
        if (event == "")
        {
            bookings(Date(d, m, y));
        }
        else if (d > 0 && m>0 && y>0) 
        {
            bookings(event, Date(d, m, y));
        }
        else
        {
            bookings(event);
        }

, но в случае, когда я не сдаю, дата не работает. Я знаю, что это что-то с аргументами даты и что в этом случае они не определены. Есть ли способ это исправить?

1 Ответ

0 голосов
/ 01 мая 2020

Вы можете получить свою дату в виде строк, используя getline, чем проверить, установлены они или нет:

    std::string event, name;
    std::string sD, sM, sY;

    int d, m, y;
    d = m = y = 0;

    std::cout << "event: ";
    std::getline(std::cin, event);

    std::cout << "date: ";
    std::getline(std::cin, sD);
    std::getline(std::cin, sM);
    std::getline(std::cin, sY);

    if(!sD.empty() && !sM.empty() && !sY.empty())
    {
        d = atoi(sD.c_str());
        m = atoi(sM.c_str());
        y = atoi(sY.c_str());
    }

    if (event == "")
    {
        bookings(Date(d, m, y));
    }
    else if (d > 0 && m>0 && y>0) 
    {
        bookings(event, Date(d, m, y));
    }
    else
    {
        bookings(event);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...