当前正在学习C ++,我正在尝试创建两个类BitBitBuffer来处理位流。

我的Bit类由一个unsigned char组成。
原理是将Bit发送到一个BitBuffer对象,当一个Bit对象中有8个BitBuffer时,将刷新缓冲区。

我试图重载BitBuffer类的输入运算符,因为我希望能够编写以下命令:

Bit x;
BitBuffer buffer;
x >> buffer;


我写了一个enqueue方法,所以我认为我应该在重载运算符中调用此方法。但是,当我现在键入这些命令时,Xcode告诉我“二进制表达式无效的操作数”。

我试图理解此错误,但无法弄清楚为什么Xcode告诉我我将函数用作变量。

任何帮助都将受到欢迎,
先感谢您!

最佳答案

您需要确保在某个地方定义了operator>>,并且将Bit作为第一个参数,将BitBuffer作为第二个参数。不过,您更有可能想要反转这些参数,并编写类似以下的表达式:

buffer << x;


因为这样您还可以将多个位链接到缓冲区中:

buffer << x << y << z;


如果您在BitBuffer类上写了一个运算符,如下所示:

class BitBuffer {
public:
    BitBuffer& operator<<(const Bit& b) {
        // do your work here
        return *this;
    }
};

07-24 16:08