目前正在学习C ++,我正在尝试创建两个类Bit
和BitBuffer
来处理比特流。
我的Bit
课程由一个unsigned char
组成
原则是将Bit
发送到一个BitBuffer
对象,当8 Bit
在一个BitBuffer
对象中时,我刷新缓冲区。
我正在尝试重载BitBuffer
类的输入操作符,因为我希望能够编写以下命令:
Bit x;
BitBuffer buffer;
x >> buffer;
我编写了一个enqueue
方法,所以我想我应该在我的重载运算符中调用此方法。但是,当我现在输入这些命令时,Xcode告诉我“二进制表达式的操作数无效”。
我试图理解这个错误,但无法弄清楚为什么Xcode告诉我我使用函数作为变量。
任何帮助都非常受欢迎,
提前谢谢!
答案 0 :(得分:1)
您需要确保某处定义了operator>>
,其中Bit
为第一个参数,BitBuffer
为第二个参数。但更有可能的是,你想要反转这些参数并写下如下表达式:
buffer << x;
因为那样你也可以将多个位链接到缓冲区中:
buffer << x << y << z;
如果您在BitBuffer
类上有一个像这样的运算符:
class BitBuffer {
public:
BitBuffer& operator<<(const Bit& b) {
// do your work here
return *this;
}
};