webForumDet fria alternativet

Operatoröverlagring

2 svar · 502 visningar · startad av juventus1

juventus1Medlem sedan dec. 2000401 inlägg
#1

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]

MisanMedlem sedan juni 200128 inlägg
#2

tabort & framför operator så går det

//Misan

juventus1Medlem sedan dec. 2000401 inlägg
#3

Det fungerar ändå inte, jag får fortfarande precis samma felmeddelanden...

------------------
mvh André,
http://www.sigmafarg.se

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb