bentley开发C++ 2a

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上略有改进,代码不麻烦,不解释,请享用!

上一篇下一篇

猜你喜欢

热点阅读