gpt4 book ai didi

C++ 设置 "flags"

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:29 26 4
gpt4 key购买 nike

例子:

enum Flags
{
A,
B,
C,
D
};

class MyClass
{
std::string data;
int foo;

// Flags theFlags; (???)
}
  • 如何才能在 MyClass 的实例中设置上述枚举中任意数量的“标志”A、B、C 和 D?

我的目标是这样的:

if ( MyClassInst.IsFlagSet( A ) ) // ...
MyClassInst.SetFlag( A ); //...
  • 我必须使用一些数组或 vector 吗?如果是,怎么做?
  • 在这种情况下枚举是个好主意吗?

最佳答案

// Warning, brain-compiled code ahead!

const int A = 1;
const int B = A << 1;
const int C = B << 1;
const int D = C << 1;

class MyClass {
public:
bool IsFlagSet(Flags flag) const {return 0 != (theFlags & flag);}
void SetFlag(Flags flag) {theFlags |= flag;}
void UnsetFlag(Flags flag) {theFlags &= ~flag;}

private:
int theFlags;
}

关于C++ 设置 "flags",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com