0
我正在嘗試爲繼承std::basic_iostream<char>
的流類實現流提取操作符。 不幸的是我得到編譯錯誤,我真的不明白。實現流操作符時編譯錯誤
這是我的簡化(非功能性)代碼:
#include <iostream>
class MyWhateverClass {
public:
int bla;
char blup;
};
class MyBuffer : public std::basic_streambuf<char> {
};
class MyStream : public std::basic_iostream<char> {
MyBuffer myBuffer;
public:
MyStream() : std::basic_iostream<char>(&myBuffer) {}
std::basic_iostream<char>& operator >> (MyWhateverClass& val) {
*this >> val.bla;
*this >> val.blup;
return *this;
}
};
int main()
{
MyStream s;
s << 1;
int i;
s >> i;
return 0;
}
我收到兩個類似的錯誤: C2678 binary '>>': no operator found which takes a left-hand operand of type 'MyStream'
,一個在我實現經營者和一個在我得到的線行來自流的int。
有趣的細節是,當我刪除操作符實現時,這兩個錯誤都消失了。
任何人都可以告訴這裏發生了什麼?
太棒了,這固定它:)'使用'對我來說是新的在這種情況下...也謝謝你的鏈接。 – user2328447