目前正在学习 C++,我正在尝试创建两个类 Bit
和 BitBuffer
来处理比特流。
我的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/