Posted By: TopGun (ICQ#: 60779546) on 'CZprogram'
Title:     Re: C++ - jak se zbavit pretypovani
Date:      Mon Oct  8 14:01:46 2001

>    Zdravim vsechny C++kare.
> 

Ani ja nemam idealne riesenie, ale nie je velka praca dat do triedy Node 
funkciu:

Node *Parent() {
     return (Node*)parent;
     }


>    Mam tridu, ktera ma slouzit jako uzel stromu. Potrebuju, aby kazdy uzel 
> stromu mel urcite vlastnosti -> vytvorim predka, od ktereho musi kazdy
> realny 
> uzel stromu podedit. 
> 
> Predek muze hodne zjednodusene vypadat treba takto:
> 
> class Base {
> public:
>   Base* parent; // ukazatel na rodice
>   // definice spolecnych vlastnosti pro vsechny uzly
> }
> 
> Potom nejaky realny uzel muze vypadat treba takto:
> 
> class Node : public Base {
>   int data; // nejaka data
>   int f();  // nejaka nove pridana funkce
> }
> 
> udelam instanci a zavolam funkci f():
> Node n;
> n.f();
> 
> to jde bez problemu, ale uz nezavolam funkci f() pro rodice :(
> 
> n.parent->f();
> 
> Musel bych volat:
> 
> ((Node*)(n.parent))->f();
> 
> Mozna by slo usetrit nejake zavorky a lepsi je asi pouzivat dynamic_cast,
> ale 
> to neni podstatne. Ja se chci zbavit toho pretypovani, protoze potrebuju 
> funkce rodice a sourozencu volat casto.
> 
> Co s tim? 
> 
> Vymyslel jsem jedno reseni, ale je takove drsne... chtel bych neco lepsiho.
> To 
> moje asi neni moc kompatibilni. Zde je to reseni.
> 
> template <class T> class Base {
> public:
>   T* parent; // ukazatel na rodice
>   // definice spolecnych vlastnosti pro vsechny uzly
> }
> 
> class Node : public Base<Node> {
>   int data; // nejaka data
>   int f();  // nejaka nove pridana funkce
> }
> 
> Ted muzu klidne zavolat n.parent->f();
> 
> 
>                  medvidek
> 
> --
>          ELVIRA - Extended LSD VoiceXML interpreter for Applications
>                        http://www.fi.muni.cz/lsd/elvira
>   Engine for building dialog applications        Free for noncommercial use


http://xrs.winradio.com                http://www.rbasic.com
http://xrs.winradio.com/plugins.htm    mailto:stofa@eshs-lab.com

             TopGun  (Are you ready to fly ?)

Search the boards