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 !