gpt4 book ai didi

c++ - 位掩码 : Set different states of an object via set method

转载 作者:行者123 更新时间:2023-11-28 02:58:50 24 4
gpt4 key购买 nike

我有一种 Material ,可以是热的或冷的,白色的或黑色的。状态可以是热和白、热和黑、冷和白、冷和黑。我有以下类(class)

   class myMaterial
{
public:
enum state
{
DEFAULT = 0,
HOT = 1 << 0,
WHITE = 1 << 1
};

void SetState(int);

private:
int m_state;
};


void myMaterial::SetState(int state)
{
m_state = state;
}

现在在 main() 中,我调用 SetState 方法来设置这些状态

myMaterial material;
material.SetState(myMaterial::HOT);

下面的位运算是否正确,设置所有类型的状态

HOT and WHITE  =>  myMaterial::HOT | myMaterial::WHITE
HOT and BLACK => myMaterial::HOT | ~myMaterial::WHITE
COLD and WHITE => ~myMaterial::HOT | myMaterial::WHITE
COLD and BLACK => ~myMaterial::HOT | ~myMaterial::WHITE

最佳答案

修改后,问题似乎有点不同,不再需要@adrin 的每个属性 2 位的解决方案。

现在只是:

HOT and WHITE = myMaterial::HOT | myMaterial::WHITE
HOT and BLACK = myMaterial::HOT
COLD and WHITE = myMaterial::WHITE
COLD and BLACK = 0

如果你添加一个额外的位来说明状态是否已知:

UNKNOWN = 0
HOT and WHITE = myMaterial::HOT | myMaterial::WHITE | myMaterial::KNOWN
HOT and BLACK = myMaterial::HOT | myMaterial::KNOWN
COLD and WHITE = myMaterial::WHITE | myMaterial::KNOWN
COLD and BLACK = myMaterial::KNOWN

关于c++ - 位掩码 : Set different states of an object via set method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21379233/

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