在函数调用中处理多个布尔变量的更好方法

时间:2014-06-24 17:10:55

标签: c++ function design-patterns boolean

逻辑是调用具有一些输入值的函数,函数返回多个布尔变量。

在未来,布尔变量可以扩展。

function(inp1,inp3,bool1,bool2... booln)

我决定将布尔变量打包到结构

function(inp1,inp3,struct bool_flags)

请帮助我进行有效的设计

1 个答案:

答案 0 :(得分:1)

我不确定你要在这里完成什么,因为问题不清楚,但我有一个想法。您可以将所有布尔值打包为uintulong。然后,变量的每个位都是一个布尔值。您可以像这样读取布尔值:

uint bools;
bool bool0 = bools & 1;
bool bool1 = (bools >> 1) & 1;
etc...

你可以像这样编写布尔值:

bools |= bool0;
bools |= bool1 << 1;
etc...

这通过逻辑移位,和/或值来起作用。 C ++中的布尔值是1或0.因此,要读取,请将“容器”变量移至& bool值。要写,请将bool值和|移动到“容器”。

唯一的缺陷是int限制为32位,long是64位。如果需要,您可以创建一个int或long结构,以便更有效地打包。祝你好运!