mdl中使用C++11的自定义字面量的新功能
2022-05-17 本文已影响0人
左图右码
mdl中写测试代码经常要进行主单位和Uor的转换,虽然借助宏能做到简洁,但不像在MVBA那样完全隔绝了UOR的转换,全在主单位层面操作,但C++11的新功能却能做到同样的简洁,在写测试代码的时候尤其省事:
inline long double operator "" _toUor(long double masterUnit)
{
return mdlCnv_masterUnitsToUors(masterUnit);
}
inline long double operator "" _toMaster(long double uorUnit)
{
return mdlCnv_uorsToMasterUnits(uorUnit);
}
inline long double operator "" _toUor(unsigned long long masterUnit)
{
return mdlCnv_masterUnitsToUors(masterUnit);
}
inline long double operator "" _toMaster(unsigned long long uorUnit)
{
return mdlCnv_uorsToMasterUnits(uorUnit);
}
void createLine()
{
MSElement li{};
auto x = 1000_toUor;
DPoint3d pts[] = { {},{x,500.1234_toUor,0} };
mdlLine_create(&li, nullptr, pts);
mdlElement_add(&li);
}
这个用法在C++14上略有改进,代码不麻烦,不解释,请享用!