【问题标题】:Multiple boolean values in an struct结构中的多个布尔值
【发布时间】:2017-03-11 21:16:16
【问题描述】:

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

我有一个结构

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,但不确定我是否理解它,但它只是获得了最后一个被检查的布尔状态,因此无法在另一个类中一次检查每个布尔状态。这有什么建议吗?仅将结构用于 bool 是一种好习惯吗?如果没有,还有其他更好的方法吗?

非常感谢

【问题讨论】:

  • 也许你可以在 C++ 中发布一个代码示例?
  • 也许你应该使用位域?

标签: c++ struct enums dword


【解决方案1】:

这主要取决于您的问题。简而言之,仅当 Foo 结构在整个 MainFoo 之外具有某些含义时才使用(例如,如果它们都是应该一起传输或保存到外部文件的所有设置),否则移动 foo2foo3MainFoo

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

struct Foo {
  bool foo2 : 1;
  bool foo3 : 1;
};

【讨论】:

  • PS:大家不妨看看typedef structstructin this answer的区别。
猜你喜欢
  • 1970-01-01
  • 2011-07-16
  • 2012-11-22
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多