c++ - FIFO 输入运算符重载

标签 c++ input queue operator-overloading fifo

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

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

关于c++ - FIFO 输入运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29147954/

相关文章:

c++ - 在同一类中使用 constexpr 作为模板参数时出错

python - 有没有办法在 python 中发送/按 NUMPAD 键?

keras - Keras 的 OrderedEnqueuer 是否保证了批处理的顺序?

c - 以字符串形式获取输入并打印

c - C 中的队列,错误的打印

c# - 为什么我的兔子队列不会死?

c++ - 使一个类或结构成为所有模板实例化类的 friend ?

C++,当我不能使用 NULL/0 时检查变量是否被初始化

C++ - std::unordered_map <int,int> 中的最坏情况和平均情况插入时间复杂度?

html - 如何允许用户在输入中键入上标?