结构中的多个布尔值

时间:2017-03-11 21:16:17

标签: c++ struct enums dword

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

我有一个结构

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使用结构的一个好习惯?如果没有,还有其他更好的方法吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

这主要取决于你的问题。简而言之,仅当Foo结构在整个MainFoo之外具有某种含义时才使用foo2结构(例如,如果它们都是应该全部一起传输或外部保存到文件中的设置),否则移动foo3MainFoostruct Foo { bool foo2 : 1; bool foo3 : 1; };

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

<a href="JavaScript: OpenPayPalWindow('https://www.paypal.com/cgi-bin/webscr?cmd=_cart&amp;business=businessemail&amp;item_name=' + escape('{$article->mArticle.name}') +'&amp;amount={$article->mArticle.price}&amp;add=1&amp;return=urlshopping&amp;currency_code=USD&amp;cancel_return=urlshopping')">
   Add to basket
</a>