评估C++;函数表达式指针 我有一个C++类,包含以下定义: class SomeClass: public BaseClass { public: SomeClass(); bool SomeClass::MyFunc( Json::Value& jsonRoot) typedef bool(SomeClass::*PFUNC)(Json::Value&); std::map<std::string, PFUNC> m_map; }

评估C++;函数表达式指针 我有一个C++类,包含以下定义: class SomeClass: public BaseClass { public: SomeClass(); bool SomeClass::MyFunc( Json::Value& jsonRoot) typedef bool(SomeClass::*PFUNC)(Json::Value&); std::map<std::string, PFUNC> m_map; },c++,stl,C++,Stl,对于在某个类的某个方法中执行: std::map<std::string, PFUNC>::iterator itFunction = m_map.find("func"); if (itFunction != m_map.end()) { PFUNC pfParse = m_map["func"]; Json::Value x; this->*pfParse(x); } 我甚至尝试过显式地使用迭代器-this->*iterator->second(…

对于在某个类的某个方法中执行:

std::map<std::string, PFUNC>::iterator itFunction = m_map.find("func");
if (itFunction != m_map.end())
{
    PFUNC pfParse = m_map["func"];
    Json::Value x;
    this->*pfParse(x);
}
我甚至尝试过显式地使用迭代器-this->*iterator->second(…),但最终还是出现了相同的错误

我做错了什么? 谢谢

()
的优先级高于
->*
,因此首先计算
pfParse(x)
。您需要使用括号对评估进行排序:

(this->*pfParse)(x);
请阅读如何制作。嗯,你的有点好,但可能更好
error C2064: term does not evaluate to a function taking 1 arguments
(this->*pfParse)(x);