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

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

时间:2023-05-02 19:34:30浏览次数:45  
标签:状态 isStateSet obj 程序运行 state C++ STATE currentState

`#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;

}
`

标签:状态,isStateSet,obj,程序运行,state,C++,STATE,currentState
From: https://www.cnblogs.com/zzzpl/p/17368083.html

相关文章

  • vcpkg:一站式C++库管理,简化工作流程
    简介vcpkg是一个用于在Windows系统上管理C++库的开源工具。它允许开发人员通过简单的命令行界面安装、管理和卸载各种C++库,并自动解决它们的依赖关系。vcpkg拥有一个庞大的库集合,包括Boost、OpenCV、Qt、SDL2等等,而且不仅限于Windows平台,还支持在Linux和macOS上进行交叉编译。......
  • 03 ETH-状态树
    03ETH-状态树目录03ETH-状态树地址到状态(balance、nonce、code、storage)的映射。以太坊地址一般160bits,一般表示为40个16进制的数。那么如何设计映射?像是key:valuepair?那么,能不能只用一个hash表来实现?(如果不考虑hash碰撞的话),那这样是不是太简单了?用hash表的话,如果需要提......
  • echarts 5.x 如果legend设置selected时,legend需要单击两次才能切换状态
    在第一组的selected里面先进行声明,在当前组再进行一次声明就可以了。 legend:[    {     show:true,     x:'center',     y:'0',     data:['日平均气温(℃)','日平均室温(℃)'],     textStyle:{......
  • C++文件读写常用操作整理
    C++对于文件的操作需要包含<fstream>头文件文件类型分为两种:文本文件-文件以文件的ASCII码的形式存储在计算机中二进制文件-文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream:读操作fstream:读写操作一、文......
  • C++杂谈:STL
    五一快乐。终于有时间整理一点东西了,笔者这个五一过得是相当初生。大部分人都玩去了,只有我还在赶ddl的世界达成了qwq。不过我觉得还是做了自己想做的事情的。稍微记录一些前段时间OOP遇到的STL里面乱七八糟的东西。STL的一些底层实现vector这个谁都知道,是一个堆上分配的数组,......
  • c++ 调用函数,编译器查找函数过程
    假设此处调用函数 inta=1;floatb=1.0;func(a,b);//调用函数若func为非模板函数,编译器查找所有的名称为func的函数,然后检查函数入参的数量,再然后检查每个入参是否都可以转换到目标类型。(此处注意,如果参数类型为类对象,若该类支持隐式转换,那么会出现如下情况:classT......
  • c++回调函数
    回调函数本质上也是普通函数,只是调用机制有所区别——首先通过传参的形式将该函数的地址传递给其他函数,然后在其他函数中通过函数指针调用该函数。在其他函数中通过函数指针调用该函数的过程称为回调,而作为被调用的该函数则被称为回调函数。为什么需要回调函数?满足接口兼容性回......
  • Pod常见状态分析
    常见状态和原因kube-schedulerPending:调度不成功kubeletImagePullBackOff:镜像拉取失败Running:容器已创建并且启动Ready:容器可以提供服务CrashLoopBackOff:容器退出后kubelet拉起新容器如果没有配置livenessProbe或者readinessProbe,那么对应的检查默认成功。通过livenessProbe和r......
  • 可设置圆角背景边框的按钮, 通过调节色彩明度自动计算按下(pressed)状态颜色
    可设置圆角背景边框的的按钮,通过调节色彩明度自动计算按下(pressed)状态颜色使用:xml<?xmlversion="1.0"encoding="UTF-8"?><LinearLayoutandroid:paddingTop="20dp"android:orientation="vertical"android:layout_height=&quo......
  • 10分钟搞定!C++类中构造函数和析构函数的完全指南
    一、初步认识构造函数1.什么是构造函数?要了解构造函数就要先了解一下,类的6个默认成员函数,如下图:构造函数:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。通俗一点来......