Hej
Jag försöker överlagra operatorn << , med det går inte så bra. I headerfilen har jag bla det här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
class Komplex
{
private:
double realdel;
double imaginardel;
public:
friend ostream &operator\<\<(ostream &os,const Komplex &obj);
};
Jag inkluderar sedan headerfilen och funktionen ser ut så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
ostream &operator<<(ostream &os,const Komplex &obj)
{
os << "\nRealdel: " << obj.realdel << endl;
os << "Imaginardel: " << obj.imaginardel;
return os;
}
När jag sedan använder operatorn ser det ut så här:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
Komplex tal1(3,4);
cout << tal1;
När jag kompilerar det hela får jag tre felmeddelanden. Kompilatorn menar att funktionen för överlagring inte har tillgång till realdel och imaginardel pga att de är deklarerade som private. Men funktionen är ju friend... Det tredje felmeddelandet sägar att 'operator << is ambigous'. Jag ser inte hur det ska kunna vara tvetydigt...
Är det någon som ser vad jag gjort för fel?
------------------
mvh André,
http://www.sigmafarg.se
[Redigerat av juventus1 den 21 jun 2001]