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

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....)

>                                                                 Rudla Kudla

      FiDo