在构造函数中使用结构

时间:2019-04-20 23:26:13

标签: c++ struct constructor

使用构造函数,我是否可以使用将存储在结构向量中的信息为私有类中的变量设置值?这将构造该类的值,其中之一是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 :(得分:0)

您可以使用类/结构内部存储的值在构造时初始化其他类/结构变量。但是,您必须记住,要使用的变量应在使用前进行初始化。 就您的示例而言,您可以使用 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;
}