typedef void (* pFunction)(std::string sData); class someclass { private: std::map m_mFuncs; std::string m_sCurrent; public: someclass(std::string sName, pFunction p); void SetCurrent(std::string sCurrent); void Return(); }; // someclass someclass::someclass(std::string sName, pFunction p) { m_mFuncs[sName] = p; m_sCurrent = sName; } void someclass::SetCurrent(std::string sCurrent) { m_sCurrent = sCurrent; } void someclass::Return() { pFunction p = m_mFuncs[sCurrent] return (*p("Some data")); }