FIFO 输入运算符重载
FIFO Input Operator Overloading
目前正在学习 C++,我正在尝试创建两个 classes Bit
和 BitBuffer
来处理比特流。
我的Bit
class由一个unsigned char
组成。
原理是将 Bit
s 发送到一个 BitBuffer
对象,当 8 Bit
s 在一个 BitBuffer
对象中时,我刷新缓冲区。
我正在尝试重载 BitBuffer
class 的输入运算符,因为我希望能够编写以下命令:
Bit x;
BitBuffer buffer;
x >> buffer;
我写了一个 enqueue
方法,所以我想我应该在我的重载运算符中调用这个方法。但是,当我现在输入这些命令时,Xcode 告诉我 "Invalid operands to binary expression".
我试图理解这个错误,但无法弄清楚为什么 Xcode 告诉我我将函数用作变量。
非常欢迎任何帮助,
提前致谢!
您需要确保在某处定义了一个 operator>>
,它以 Bit
作为第一个参数,以 BitBuffer
作为第二个参数。不过,更有可能的是,您需要反转这些参数并编写如下表达式:
buffer << x;
因为这样您还可以将多个位链接到缓冲区中:
buffer << x << y << z;
如果您在 BitBuffer
class 上有这样的书面运算符:
class BitBuffer {
public:
BitBuffer& operator<<(const Bit& b) {
// do your work here
return *this;
}
};
目前正在学习 C++,我正在尝试创建两个 classes Bit
和 BitBuffer
来处理比特流。
我的Bit
class由一个unsigned char
组成。
原理是将 Bit
s 发送到一个 BitBuffer
对象,当 8 Bit
s 在一个 BitBuffer
对象中时,我刷新缓冲区。
我正在尝试重载 BitBuffer
class 的输入运算符,因为我希望能够编写以下命令:
Bit x;
BitBuffer buffer;
x >> buffer;
我写了一个 enqueue
方法,所以我想我应该在我的重载运算符中调用这个方法。但是,当我现在输入这些命令时,Xcode 告诉我 "Invalid operands to binary expression".
我试图理解这个错误,但无法弄清楚为什么 Xcode 告诉我我将函数用作变量。
非常欢迎任何帮助,
提前致谢!
您需要确保在某处定义了一个 operator>>
,它以 Bit
作为第一个参数,以 BitBuffer
作为第二个参数。不过,更有可能的是,您需要反转这些参数并编写如下表达式:
buffer << x;
因为这样您还可以将多个位链接到缓冲区中:
buffer << x << y << z;
如果您在 BitBuffer
class 上有这样的书面运算符:
class BitBuffer {
public:
BitBuffer& operator<<(const Bit& b) {
// do your work here
return *this;
}
};