【C++】设立一组状态,在程序运行过程中设置对象的某个状态,检查对象是否满足所有的状态

zzzpl / 2023-05-03 / 原文

`#include

// 定义状态枚举
enum State {
STATE_A = 1 << 0, // 0001
STATE_B = 1 << 1, // 0010
STATE_C = 1 << 2 // 0100
};

class MyClass {
private:
int currentState;

public:
MyClass() : currentState(0) {}

// 设置状态
void setState(State state) {
    currentState |= state;
}

// 取消状态
void unsetState(State state) {
    currentState &= ~state;
}

// 检查状态是否已设置
bool isStateSet(State state) const {
    return (currentState & state) == state;
}

// 检查对象是否满足所有的状态
bool isAllStatesSet() const {
    return isStateSet(STATE_A) && isStateSet(STATE_B) && isStateSet(STATE_C);
}

};

int main() {
MyClass obj;

// 设置状态
obj.setState(STATE_A);
obj.setState(STATE_B);
obj.setState(STATE_C);

// 检查对象是否满足所有的状态
if (obj.isAllStatesSet()) {
    std::cout << "对象满足所有的状态" << std::endl;
} else {
    std::cout << "对象不满足所有的状态" << std::endl;
}

return 0;

}
`