Advertisement

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文件中进行定义。

全部评论 (0)

还没有任何评论哟~