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
謝謝,這有幫助,但現在我怎麼會這樣做它是一個常量? –