Posted By: RoboShim (ICQ #: 166 703 40) on 'CZprogram'
Title: Re: Heterogenni seznam
Date: Fri Feb 1 08:37:26 2002
> class O1: public O
> {
> .......
> };
>
> class O2: public O
> {
> .......
> };
>
> class A
> {
> void Akce()
> {
> for( vector<O*>::iterator i = vec.begin(); i < vec.end(); i++){
> (*i)->SetData( GetData( (*i)->identifikator_typu ));
> (*i)->Run();
> SetData( (*i)->identifikator_typu, (*i)->GetData());
> }
> }
>
> virtual void * GetData( const int type_id)
> {
> switch(type_id)of
> case cStr_o1:
> ...
> case cStr_o2:
> ...
> }
> }
>
> virtual void SetData( const int type_id, void * p)
> {
> switch(type_id)of
> ....
> }
> }
> };
>
> Jde to udelat nejak jinak?
> Co se mi na tom nelibi je to type_id, predpoklada to, ze si vytvorim nejake
> popisovani typu. Neni neco podobneho uz implementovano?
*** Teda nejsem si jistej, ale nemel bys spis udelat v tech tridach ty metody
setData a GetData pro kazdou tridu ten prislusnej? Pak bys nepotreboval nic
zjistovat pres swtich a zavolala by se spravna metoda pri behu (ted jsem o
tom cetl:), tusim se tomu rika pozdni vazba nebo tak nejak, proste spravna
metoda se vybere az pri behu programu). Samozrejme ze pak v A::Akce musis mit
v tom cyklu v promennej i odkazy na ty objecty O1, O2 ....
Snad nekecam kraviny.
RoboShim.