动态选择函数
//根据不同的mode,来调用不同的类成员函数
void(TestCls:: * addTarget)() = nullptr;
addTarget = (addTarget) ? addTarget : (mode == ENUM_A) ? &TestCls::AddTargetFun1 : nullptr;
addTarget = (addTarget) ? addTarget : (mode == ENUM_B) ? &TestCls::AddTargetFun2 : nullptr;
使用函数映射表,减少if...else...语句
//构建之前,必须有函数指针的定义才行
typedef void (DataHandleThread::*pf)(Json::Value&);
QMap<QString,pf> m_parseFunMap;//建立根据名称查找执行函数的map
void DataHandleThread::ConfigFunMap()
{
//备注:以下反射的建立与使用,只是初级
m_parseFunMap["beart_jump"] = &DataHandleThread::beart_jump_response_parse;
m_parseFunMap["realtime_target"] = &DataHandleThread::realtime_target_parse;
m_parseFunMap["get_current_target"] = &DataHandleThread::realtime_target_parse;
}
相关问题
类的前向声明如下:
//无命名空间的写法
class ClsA;
//有命名空间的写法
namespace nsp{
class ClsB;
}
使用容器之前,通常需要前向生命一下才行,且class
和struct
不能混用。
网友评论