mdl中使用C++11的自定义字面量的新功能

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容