利用bind绑定重载函数

出现重载的时候,Bind无法推导出正确的重载类型,需要显示的指定,实例代码如下:
BOOL CJDTDrawer::Draw()
{
const CJDTGraph& gphJDT = GetGphJDT();
CJDTGraph::ConstItSetVertex itVtxJDT;
for ( itVtxJDT = gphJDT.vtxBegin(); itVtxJDT != gphJDT.vtxEnd(); ++ itVtxJDT )
{
    CXTGraph::ConstItSetVertex itVtxXT;
    const CXTGraph& gphXT = itVtxJDT->gphXT;
    for ( itVtxXT = gphXT.vtxBegin(); itVtxXT != gphXT.vtxEnd(); ++ itVtxXT )
    {
        std::for_each( 
            itVtxXT->vctpEntity.begin(), itVtxXT->vctpEntity.end(), 
//              std::ptr_fun< AcDbEntity*, Acad::ErrorStatus >( ArxDbgUtils::addToCurrentSpaceAndClose )
            boost::bind< Acad::ErrorStatus, AcDbEntity* >( ArxDbgUtils::addToCurrentSpaceAndClose, _1 )
            );
    }
}

return TRUE;
}


void CYPackageEvent::appendEvent(CYEventSharedPtr pEvent)
{
if (std::binary_search(STD_RANGE(m_lstEvent), pEvent))
{
    return;
}
orderInsertT(m_lstEvent, pEvent);
}
void CYPackageEvent::appendEvent(const CYEventSharedPtrList& lstEvent)
{
    std::for_each(STD_RANGE(lstEvent), BD<void, CYPackageEvent, CYEventSharedPtr>(&CYPackageEvent::appendEvent, this, _1));
}

重载函数太多,且参数不同的时候,需要显示的指定绑定的模板参数
CYGeCurves cvAxis;
CHECK_EOK_RET(arrAxis.foreach(BD<Acad::ErrorStatus, CYGeCurves, CPAcDbEntity>
    (&CYGeCurves::push, &cvAxis, BD(UPXRiverAxisPtrArray::ToNativePointer(), _1))));
 
/// <summary>
/// 从别的实体拷贝属性到当前实体.
/// </summary>
Acad::ErrorStatus copyPropertyFrom(CRAcDbObjectId idEnt);
 
/// <summary>
/// 从别的实体拷贝属性到当前实体.
/// </summary>
Acad::ErrorStatus copyPropertyFrom(const UPXEntity& val);
 
/// <summary>
/// 从别的实体拷贝属性到当前实体.
/// </summary>
Acad::ErrorStatus copyPropertyFrom(const UPXEntity* pVal);
 
 
UPXEntityPtrArray arrTarget(dv.rget_idEntTo(), AcDb::kForWrite);
WARING_NOT_EOK(arrTarget.foreach(BD<Acad::ErrorStatus, UPXEntity, CPUPXEntity>(&UPXEntity::copyPropertyFrom, _1, &spFrom)));




转载于:https://www.cnblogs.com/ffbear/archive/2012/08/24/2653732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值