我有这段代码,我无法计算出<
ostream& operator<<(ostream& out)
{int check=0;
node *temp;
temp=this->head->next;
if(this->head->info==0)
out<<"- ";
while(temp!=NULL)
{ if(temp->info)
{out<<temp->info<<" ";
check=1;
temp=temp->next;}
else if(temp->info==0&&check==1)
{out<<temp->info<<" ";
temp=temp->next;}
else temp=temp->next;
}
return out;
}
我在课堂上有一个结构,并希望输出大量。使用链接列表创建大量数字。重载方法在类内部,并且出现错误:当我使用运算符<
cout<< B;
内部主要。
有关上述代码的更多详细信息。检查变量是确保输出100这样的数字。如果head-> info == 0 number是负数,如果它是1,则数字是正数。我从head-> next开始,因为第一个节点具有数字符号。
最佳答案
如果要使用标准语法,则operator<<
重载不能成为成员函数-您必须将其称为B << cout
,这远非理想。
(对于所有二进制运算符,B.operator<<(cout)
表示B
是左侧。)
这是我通常要做的。
命名的常规成员函数:
ostream& output(ostream& out) const
{
// Your code here.
}
以及一个仅会调用以下内容的运算符:
ostream& operator<<(ostream& os, const MyClass& c)
{
return c.output(os);
}