在C中为枚举添加“全部”选项有什么好的设计?

前端之家收集整理的这篇文章主要介绍了在C中为枚举添加“全部”选项有什么好的设计?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个枚举类如下: @H_403_2@enum class Age { Eleven,Twelve,Thirteen };

然后我有一个名为vector< Person>的方法. GetPeopleOfAge(年龄).什么是一个好的设计,以便开发人员可以打电话给这个并让11,12和13的人?我可以称它为三次,这很糟糕,但我确实想提一下我考虑过它.我可以添加一个All枚举并对我的方法进行检查,但是我不喜欢用All等枚举来污染枚举的想法只是为了让我的案例工作.我知道这是一种解决这个问题的常用方法,有些人可能不同意我的意见,但对我而言,它感觉很hacky并且正在寻找替代方案.也许我应该使用枚举以外的东西?

解决方法

无论All是在枚举中显式捕获还是由其他机制隐式捕获,都必须处理抽象.鉴于此,我发现明确处理它会更好.

您可以使用已建立的使用枚举值方法,以便可以使用按位OR运算符组合它们.

@H_403_2@enum Age : unsigned int { Eleven = 000001,Twelve = 000010,Thirteen = 000100,All = 000111 };

然后,你可以使用

@H_403_2@// Get all the people of age 11 auto ret1 = GetPeopleOfAge(Age::Eleven); // Get people of all ages auto ret2 = GetPeopleOfAge(Age::All); // Get all the people aged 11 or 13 auto ret3 = GetPeopleOfAge(Age::Eleven | Age::Thirteen);

猜你在找的C&C++相关文章