2017-03-11 5 views
-2

構造体に複数のブール値を使用することに関する質問があります。構造体内の複数のブール値

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

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

私は別の主構造体

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

及び機能

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

の別の機能に一部である構造体

typedef struct Foo 
{ 
foo2, 
foo3 
} 

を有します

、最終的には別のクラスで私は

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

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

を確認し、これらをチェックし、他のより良い方法があるのであれば私の質問はあります。私はDwordを使ってみましたが、それを理解しているかどうかはわかりませんが、最後のブール状態がチェックされているため、別のクラスのブール値をチェックすることができませんでした。これでどんな提案ですか?ブールのためだけに構造体を使用していますか?それ以外の方法はありませんか?

ありがとうございました

+1

おそらく、C++でコード例を投稿することができますか? – molbdnilo

+1

ビットフィールドを使うべきでしょうか? – mko

答えて

1

主に問題によって異なります。簡単に説明すると、Foo構造体は、MainFoo以外の意味を持っている場合にのみ使用します(たとえば、すべて一緒に転送するか、外部ファイルに保存するすべての設定の場合)。foo2およびfoo3MainFooに移動します。

それ以外は正しいです。一方、bit fieldsを使用するとメモリ消費量を減らすことができます。

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

PS: 'typedef struct'と' struct'の違いを見てみようと思うかもしれません。(この答えはhttp://stackoverflow.com/a/612350/1485885)。 – cbuchart

関連する問題