我正在写一个简单的链接列表,它工作正常,但我不得不重载ostream(好吧,我不确定我的意思是ostream还是instream!):
class List
{
public:
void addToEnd(int data);
/* operator overloads */
friend std::istream& operator >> (std::istream& is, int data);
};
std::istream& operator>>(std::istream& is, int data)
{
for(int i = 0; i < is.gcount(); i++)
{
// how to call ist::addToEnd(data);
}
}
我想以某种方式使它能够:
List list();
list << 2 << 3 << 4;
因此我使用此表单而不是调用addToEnd(X)
答案 0 :(得分:2)
您展示的示例是:
/platforms/android
显然,您需要重载list << 2 << 3 << 4;
,而不是operator <<
。 operator >>
的参数是<<
和List
,因此您需要的功能是:
int
请注意,此功能不需要是朋友,因为它只使用List& operator <<(List& list, int data)
{
list.addToEnd(data);
return list;
}
的公共方法。
没有涉及istream或ostream。