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 !