MARIE 코드 시뮬레이터를 만들려고하고 있는데, 뭐라 부를지라도 긴 전환 케이스가 클래스의 일부 개인 함수에 액세스하는 것을 피하려고합니다.어떻게 private 멤버 함수 포인터의 정적 맵을 초기화합니까?
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 }
};
무효 함수의 긴 목록은 개인 회원에 액세스하고 제대로 CPP 파일에 문제가
에 정의되어 있습니다 MARIEinstruction 맵을 초기화 할 때 해당 함수에 액세스 할 수 없다는 오류가 표시됩니다. 나는 그것이 사적이기 때문에 그것이라는 것을 알고 있습니다, 그리고 나는 단지 그들을 공개하는 것으로 고칠 수 있습니다.
이렇게 할 수있는 방법이 있으며 모두 비공개로 유지 하시겠습니까? 다른 방법으로이 작업을 수행하도록 권장합니까?
'const'맵에 레이블을 지정하고 싶을 수도 있습니다. 변경하지 않으려 고합니다. – OmnipotentEntity
고마워, 그게 도움이 됐어,하지만 지금은 어떻게 const로 그걸 할까? –