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