FIFO输入运算符过载

FIFO Input Operator Overloading

本文关键字:运算符 输入 FIFO      更新时间:2023-10-16

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

我的Bit类由一个unsigned char组成
其原理是将Bit s发送到一个BitBuffer对象,当8个Bit s在一个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;
    }
};