我正在尝试重载 << 运算符,但我遇到了一些此类错误:
passing
const std::ostream' as
this' argument of `std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char, _Traits = std::char_traits]' discards qualifiers
这是我的代码:
#include<iostream>
using namespace std;
class nod{
protected:
int info;
nod *next;
friend class lista;
friend const ostream &operator<<(const ostream &,lista&);
};
class lista
{nod *first, *last;
public:
lista()
{first=new nod;
last=new nod;
first=last=NULL;}
void insert(int);
// void remove();
void afisare();
nod *get_first(){ return first;};
};
void lista::insert(int x)
{ nod *nou=new nod;
nou->info=x;
if(!first)
first=last=nou;
else
nou->next=first;
first=nou;
last->next=first;}
const ostream &operator<<(const ostream &o,lista &A)
{nod *curent=new nod;
o<<"Afisare: ";
curent=A.get_first();
if(curent)
o<<curent->info<<" ";
curent=curent->next;
while(curent!=A.get_first())
{o<<curent->info<<" ";
curent=curent->next;}
return o;
}
int main()
{lista A;
A.insert(2);
A.insert(6);
A.insert(8);
A.insert(3);
A.insert(5);
cout<<A;
system("pause");
return 0;}
最佳答案
这个 const ostream &operator<<(const ostream &o,lista &A)
应该是:
ostream &operator<<(ostream &o,lista &A)
因为实际流在您写入时已被修改。
关于c++ - 在 C++ 中重载 << 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990953/