具有r值的类似数组的功能

时间:2018-12-15 22:47:06

标签: c++ operator-overloading flags template-classes

我一直在编写一个简单的类cFlags,它用于在单个变量中存储布尔标志,而不是创建多个布尔变量(所有布尔变量占用一个字节的内存)。一切工作正常,但是在尝试简化设置标志值时遇到了这个问题。 跳过不相关的部分,我的代码如下所示:

template <typename T>
cFlags
{
    public:
        bool get(char flag);
        void set(char flag, bool value);

    private:
        T flags_;
};

创建的类包含模板类型的成员变量,并允许使用set()和get()方法管理其位(char参数对应于flags_成员中的特定位)。

现在,我想到了一个方法,我应该使operator []重载,以使设置和获取标志值更加容易。 问题是,我找不到像这样的东西

cFlags<char> flags;
flags[0] = true;

可能,因为operator []重载仅返回一个r值布尔值,该值对应于某个位是否点亮。 我应该如何实现这样的功能,例如我可以做的事情:

cFlags<char> flags;
flags[0] = true;
if (flags[0]) {
    std::cout << "Bit 0 is active!";
}

0 个答案:

没有答案