Posted By: pivson (Pijte pivo, je zdrave !) on 'CZprogram'
Title:     Re: C++ - jak se zbavit pretypovani
Date:      Mon Oct  8 17:52:12 2001

> 
> 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();

To je snad __JASNY__ ne ? Jak chces zavolat 'f' pro kdyz 'base' ji nema 
definovanou ? Jediny cisty reseni (jesli te dobre chapu - estli ne omlouvam 
se) je

class Base {
    virtual void f();
} 

popripade jeste =0

Potmo budes moct regulerne napsat

n.parent->f() a zavola se __ta_spravna__ fce. Pokud mas 'vic' potomku (node, 
node2) a kazdej ma svoji implementace 'f' - pak je virtual jedina mozna cesta 
protoze jinak se ti bude volat (prez pretypovani nebo template) jedna 
(bnejspis ta prvni) - a ne ta ktera prislusi dany tride.

Takze bud si totalne ulitnul, nebo jsem blbej ja a nepochopil se te :) 




Pivson I a posledni, z bozi vule pivar

    A co budou delat cesi ???
                                     Deme na pivo !

Search the boards