Kisse OT: C++ guruk, segitsetek!

Peter.Wolkensdorfer at uk.neceur.com Peter.Wolkensdorfer at uk.neceur.com
Wed Apr 18 09:00:15 CEST 2001


Sziasztok,

  a kovetkezo sulyos problemaval szembesultem:

  deklaraltam egy objektumot, aminek van egy, a sajat tagfuggvenyeire
mutato pointerekbol allo tombje (ime egy pointer):

  int (MyObject::*Handler)(char *InitString);

  Ezen pointerek kozul egyeseket mar az alaposztalyban definialnek, a
tobbinek viszont csak a szarmaztatott objektum osztalyokban szeretnek
erteket adni. Igy tudnek egy altalanos kezelot irni az alap objektum
osztalyban,
ami minden szarmaztatott objektumra nezve altalanos, de a vegrehajtas megis
az adott szarmaztatott osztalyra nezve specifikus. A gond csak ott van,
hogy az ertekadasnal a szarmaztatott osztalyban

  Handler=&ChildObject::ChildHandler;

sikit a fordito, hogy aszongya

  Cannot convert 'int(ChildObject::*)(char *)' to 'int(MyObject::*)(char
*)'

leven a MyObject es a ChildObject nem egyforma objektumok. Szoval hogyan
lehetne ravenni, hogy ne tegye ezt? Megjegyzes: a *Handler csak
tagfuggvenye lehet a MyObject-nek, mert az objektum mezoihez hozza kell
fernie, igy az

  int (*Handler)(char *InitString);

es ezutan a fuggvenyek objektumon kivuli definialasa cimu huszarvagas
sajnos nem megoldas. Virtualis fuggvenyek hasznalata azert kinos, mert
azokat (szerintem) nem lehet tombbe szervezni, tehat elore kellene
deklaralnom annyi fuggvenyt, ahany elemu a tombom, es ez azert nem egy
gusztusos megoldas mondjuk 32 fuggveny eseten.

Valakinek lenne otlete a problema megoldasara? Nem lenne hatrany, ha a
megoldas raadasul portabilis...

  Elore is koszi a segitseget.

  Wolkens






More information about the Elektro mailing list