首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位掩码助手和操作符重载语法设计

位掩码助手和操作符重载语法设计
EN

Stack Overflow用户
提问于 2018-10-12 09:36:52
回答 1查看 67关注 0票数 0

我正在编写一个小助手类来帮助设置基于位掩码的位标志。但是,我在使用操作符重载设计一个好的、清晰的语法时遇到了一些困难。为了说明,一些可能的想法如下所示(bit名称空间和‘掩码’类是我的):

代码语言:javascript
复制
unsigned int flags = 0x01011001;
unsigned int mask  = 0x00001001;
const bool updateVal = getNewValFromElsewhere();

1) (使用reference标记并相应更新)

代码语言:javascript
复制
flags & bit::mask(mask) = updateVal ; //i sort of like this one
bit::mask(mask) & flags = updateVal ; //but what is this supposed to mean then ?

( 2)也可以通过价值而不是参考来传递。

代码语言:javascript
复制
flags = flags & mask = updateVal ; //looks cryptic to me
flags &= mask = updateVal; //still somewhat cryptic

正如你所看到的,它只是感觉不直观和简洁。在设计语法方面,我需要帮助,不是通过实际的实现(而是在c++的范围内)。与标志一起使用的operator&不是我最关心的问题,可以更改为任何操作符来启动自定义行为,但这会有帮助吗?我应该放弃这个助手类的操作符重载的整个想法吗?(为什么?)

3)没有操作符重载的示例

代码语言:javascript
复制
bit::mask_flags(flags, mask).set(updateVal);//doesn't feel so good
bit::bitflags(flags).set_using_mask(mask, updateVal)//maybe better, but then what with other operations than setting..
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-12 13:52:03

目前,我的结果是介于两者之间,我认为它提供了足够的“语法”,同时也支持灵活的构建块,并避免了单一函数的缺陷。

代码语言:javascript
复制
bit::flags_ref( flags ).with_mask( mask ) = updateVal;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52776625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档