我有这段代码,我无法计算出<

 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);
}

10-08 05:12