map+using模板函数

// using 模板

using SCQuery = std::function<void(LPCShapeComponent, LPIShapeComponent, CComQIPtr<IShape> p, ShapeDataVarVector& ShapeCompInfos)>;

//map容器搭配模板

std::map<long, SCQuery> scQueryMap = {

{SCT_SIZEBOX, querySizeBoxSC},

{SCT_GROUP, queryGroupSC},         //没有vc接口

};

//函数声明

void querySizeBoxSC(LPCShapeComponent pcSC, LPIShapeComponent piSC, CComQIPtr<IShape> p, ShapeDataVarVector& ShapeCompInfos)

{

}

void queryGroupSC(LPCShapeComponent pcSC, LPIShapeComponent piSC, CComQIPtr<IShape> p, ShapeDataVarVector& ShapeCompInfos)

{

}

//使用方法

auto it = scQueryMap.find(scType);

if (scQueryMap.end() != it)

{

auto SCMgr = std::make_unique<ShapeDataVarMgr>(SubMgr.get());

ShapeDataVarVector shapecompinfos;

SCQuery f = it->second;

f(pcSC, piSC, p, shapecompinfos);

for (auto info : shapecompinfos)

SCMgr->AddShapeDataVar(info);

SubMgr->AddSubMgr(SCMgr);

}

主要作用用来解决switch-case 和if-else if-else if-else 的问题

代码1

 代码2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值