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)
还没有任何评论哟~
