FIFO 输入运算符重载

FIFO Input Operator Overloading

目前正在学习 C++,我正在尝试创建两个 classes BitBitBuffer 来处理比特流。

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

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

Bit x;
BitBuffer buffer;
x >> buffer;

我写了一个 enqueue 方法,所以我想我应该在我的重载运算符中调用这个方法。但是,当我现在输入这些命令时,Xcode 告诉我 "Invalid operands to binary expression".

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

非常欢迎任何帮助,
提前致谢!

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

buffer << x;

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

buffer << x << y << z;

如果您在 BitBuffer class 上有这样的书面运算符:

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