C++类中静态数据成员MAP如何初始化

在写C++时,博主遇到对类中静态的map进行初始化的问题,在不断尝试中找到了一种解决方案。
如下所示:
我们可以在类中写一个私有的静态成员函数用于对map初始化。
CGuitarSpec.h

class GuitarSpec//吉他的部分属性
{
public:
    string GetColor();
    int SetColor(Color);
    string GetType();
    int SetType(Type);
    bool operator==(const GuitarSpec &TempGuitarSpec);
private:
    Type type;
    Color color;
    static map<int, string> Mtype;
    static map<int, string> Mcolor;
    static map<int, string> CreateMtype()
    {
        map<int, string> TempMtype;
        TempMtype.insert(pair<int, string>(popular,"popular"));
        TempMtype.insert(pair<int, string>(classical,"classical"));
        return TempMtype;
    }

    static map<int, string> CreateMcolor()
    {
        map<int, string> TempMColor;
        TempMColor.insert(pair<int, string>(red,"red"));
        TempMColor.insert(pair<int, string>(yellow,"yellow"));
        TempMColor.insert(pair<int, string>(blue,"blue"));
        TempMColor.insert(pair<int, string>(green,"green"));
        return TempMColor;
    }
};

GuitarSpec.cpp

#include "CGuitarSpec.h"

map<int, string> GuitarSpec::Mtype = GuitarSpec::CreateMtype();//静态数据成员初始化
map<int, string> GuitarSpec::Mcolor = GuitarSpec::CreateMcolor();//静态数据成员初始化

如此便实现了对C++类中对静态map的初始化。
博主在这里将私有静态函数的实现放在了头文件中,建议大家将其实现放在.cpp中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值