1
我试图制作一个MARIE代码模拟器,或者任何你会称之为的,我试图避免一个长开关的情况下访问类中的一些私人功能。如何初始化私有成员函数指针的静态映射?
MARIEapp.h:
MARIEapp.h{
public:
typedef void (MARIEapp::*Instruction)();
private:
static std::map<char, Instruction> MARIEinstruction;
void JnS();
void Load();
void Store();
void Add();
void Subt();
void Input();
void Output();
void Halt();
void Skipcond();
void Jump();
void Clear();
void AddI();
void JumpI();
void LoadI();
void StoreI();
};
MARIEapp.cpp:
static std::map<char, MARIEapp::Instruction> MARIEinstruction = {
{ '0', &MARIEapp::JnS },
{ '1', &MARIEapp::Load },
{ '2', &MARIEapp::Store },
{ '3', &MARIEapp::Add },
{ '4', &MARIEapp::Subt },
{ '5', &MARIEapp::Input },
{ '6', &MARIEapp::Output },
{ '7', &MARIEapp::Halt },
{ '8', &MARIEapp::Skipcond },
{ '9', &MARIEapp::Jump },
{ 'A', &MARIEapp::Clear },
{ 'B', &MARIEapp::AddI },
{ 'C', &MARIEapp::JumpI },
{ 'D', &MARIEapp::LoadI },
{ 'E', &MARIEapp::StoreI }
};
的void函数的一长串访问私有成员和cpp文件
的问题是正确定义当初始化MARIEinstruction地图时,我得到一个错误,说这些函数不可访问。我知道这是因为他们是私人的,我可以通过公开他们来解决这个问题。
有没有一种方法可以做到这一点,并将这些全部视为私密? 也有任何其他方式,你推荐我这样做?
您还想标注地图'const'您可能不想更改它。 – OmnipotentEntity
谢谢,这有帮助,但现在我怎么会这样做它是一个常量? –