#c #struct #constructor
#c #структура #конструктор
Вопрос:
Могу ли я с помощью конструктора задавать значения переменным, расположенным в частных классах, используя информацию, которая будет храниться в векторе структуры? Это создаст значения для класса, одним из которых является строковое имя месяца -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. Трудно понять, что вы имеете в виду, но может быть, вы просто хотели
m==yVector.at(i).mPlace
monthName=yVector.at(i).mName;
вместо этого сделать and ?
Ответ №1:
Вы можете использовать значения, сохраненные внутренними частями класса / структуры, для инициализации других переменных класса / структуры во время построения. Но вы должны иметь в виду, что переменные, которые вы хотите использовать, должны быть инициализированы перед использованием. Для целей вашего примера вы можете использовать статическое поле 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;
}