当前正在学习C ++,我正在尝试创建两个类Bit
和BitBuffer
来处理位流。
我的Bit
类由一个unsigned char
组成。
原理是将Bit
发送到一个BitBuffer
对象,当一个Bit
对象中有8个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;
}
};