Использование структуры в конструкторе - PullRequest
0 голосов
/ 21 апреля 2019

Используя конструктор, могу ли я установить значения для переменных, находящихся в приватных классах, используя информацию, которая будет храниться в структурном векторе?Это создаст значения для класса, одним из которых будет строковое имя month-monthName, используя числовое место месяца в качестве ориентира для места в векторе структуры.

//m/d/y;year_is_private_variable
Date(unsigned m, unsigned d, unsigned y){
         year=y;
         for(unsigned i=0;i<12;++i){
             if(m==yVector.mPlace.at(i)){
                 monthName=yVector.mName.at(i);

             }
         }

1 Ответ

0 голосов
/ 21 апреля 2019

Вы можете использовать значения, хранимые внутренними частями класса / структуры, для инициализации других переменных класса / структуры во время построения. Но вы должны иметь в виду, что переменные, которые вы хотите использовать, должны быть инициализированы перед использованием. В целях вашего примера вы можете использовать поле static const для хранения всех месяцев. Упрощенный код ниже

#include <iostream>
#include <string>
#include <vector>

struct Date
{
    Date(int month)
        : month_name(values[month])
    {

    }

    std::string month_name;

private:

    static const std::vector<std::string> values;
};

const std::vector<std::string> Date::values = {"may", "april"};

int main()
{
    Date d = Date(1);

    std::cout << d.month_name;

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