[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Otazka na C++ programatory





> -----Original Message-----
> From: amiga@k332.feld.cvut.cz [mailto:amiga@k332.feld.cvut.cz]On Behalf
> Of Filip Doksansky
> Sent: Tuesday, August 11, 1998 10:50 AM
> To: Multiple recipients of list
> Subject: Re: Otazka na C++ programatory
>
>
> > > Mam problem: Potrebuju udelat pretezovani operatoru "=" tak,
> aby kdyz je
> > > na leve
> > > strane = treba integer, a na prave strane nejaka trida, aby mi to
> > > zavolalo nejakou moji
> > > funkci, ktery vybere co potrebuju z ty tridy a vrati to do
> toho integeru.
> > >
> > > Priklad:
> > >
> > > class pokus
> > > {
> > >     public:
> > >         pokus();
> > >         pokus(int);
> > >
> > >     private:
> > >         float f;
> > > };
> > >
> > > pokus::pokus(int n)
> > > {
> > >     f=(float)n;
> > > }
> > >
> > > void main()
> > > {
> > >     pokus p;
> > >     int a=4;
> > >
> > >     p=a;    //tohle zafunguje a do promenne f tridy pokus se
> ulozi obsah
> > > promenne a
> > >
> > > //ale jak dosahnu tohohle:
> > >
> > >     a=p;    // ?????
> > >
> > > }
> > >
> >
> > Zkus zadefinovat operator pro pretypovani pokus na int. Nekdy
> se to pak musi
> > presmerovat explicitne, jindy to udela C++ samo.
> >
> > pokus::operator int() { return (int)f };
>
> To me prave taky napadlo, ale ja to chtel, aby to umelo samo,
> podle toho, codam
> na levou stranu, tak by to zavolalo odpovidajici fci. Asi to ale
> jinak nepujde,
> ted jsem koukal do ucebnice C++ od Soustrupa a on taky pise, ze to neumi,
> protoze zakladni typy nejsou trida (char,int,short....)
>

No to jo, ale umi rozpoznat pretypovani na ruyne typy. Pokud se dodefinuje
dalsi operator pro presmerovani na char, tak pro char c = p ti vyvola to
presmerovani na char.

Jo aha, ted mi to doslo, ty asi potrebujes za behu programu rozlisit jaky
typ je na leve strane a podle toho neco udelat, ze jo?

										Rudla Kudla