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

来源:互联网 发布:未闻花名但知花香 编辑:程序博客网 时间:2024/05/16 08:26

在写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中。

阅读全文
0 0
原创粉丝点击