gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:22:10 25 4
gpt4 key购买 nike

目前正在学习 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com