出现重载的时候,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)));