结构中的多个布尔值

c++ struct enums dword

1205 观看

1回复

40 作者的声誉

我有一个关于在结构中使用多个布尔值的问题。

我有一个结构

typedef struct Foo
{
 foo2,
 foo3
}

这是另一个主要结构的一部分

typedef struct MainFoo
{
  int n,
  ....
  .
  .
  FOO foo

和功能

void foo(int foo)
{
   if(foo)
   b = true;
}

并在另一个功能中:

if(b)
{
 bool Foo.foo2 = true;
}

if(b)
{
  bool Foo.foo3 = true;
}

最后在另一堂课我检查

if(Foo.foo2)
{
  //Do something
}

if(Foo.foo3)
{
 //Do Something
}

所以我的问题是是否还有其他更好的方法来检查这些。我尝试使用Dword,但不确定我是否理解它,但是它只是检查了最后一个布尔状态,因此无法一次检查另一个类中的每个布尔状态。有什么建议吗?仅将结构体用于布尔是一种好习惯吗?如果没有,还有其他更好的方法吗?

非常感谢你

作者: Jasmine 的来源 发布者: 2017 年 3 月 11 日

回应 1


1

6340 作者的声誉

决定

这主要取决于您的问题。简要地讲,Foo仅当该结构MainFoo在整体上具有某种意义时才使用该结构(例如,如果它们是应该一起全部转移或保存到外部文件的所有设置),否则将foo2foo3移至MainFoo

除此之外,使用是正确的。另一方面,如果使用bit字段,则可以减少内存消耗。

struct Foo {
  bool foo2 : 1;
  bool foo3 : 1;
};
作者: cbuchart 发布者: 2017 年 3 月 12 日
32x32