函数指针的使用

2023-06-05  本文已影响0人  雯饰太一

动态选择函数

//根据不同的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;
}

使用容器之前,通常需要前向生命一下才行,且classstruct不能混用。

上一篇下一篇

猜你喜欢

热点阅读