FIFO输入操作符重载

时间:2015-03-19 14:58:30

标签: 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告诉我我使用函数作为变量。

任何帮助都非常受欢迎,
提前谢谢!

1 个答案:

答案 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;
    }
};