Koderek!
Van egy B (absztrakt) osztalyom es ennek B1, B2 ket
szarmaztatott osztalya. B-nek van egy pure virtual tagfuggvenye,
mondjuk B::fgv(). B1 es B2 ezt implementaljak.
Lehet C++-ban egy olyan konstruktort irni, mely argumentumatol
fuggoen B1 vagy B2 tipusu objektumokat gyart, peldaul
B *b = new B("B1"); // csak pelda
vagy
B *b = new B("B2"); // csak pelda
-szeru szintaxissal?
A dontest arra nezve, hogy milyen tipusu objektum jon letre, a
konstruktoron belul lenne celszeru meghozni. Igy kesobb, a b->fgv()
hivas a B1::fgv()-t vagy a B2::fgv()-t hivja meg, *b tipusatol fuggoen.
Ami eddig eszembe jutott:
0. szarmaztatas nelkul, a B-be epiteni egy flagget, mely meghatarozza
a B::fgv() mukodeset. *boaaaaa*
1. B *b = (cond) ? new B1() : new B2(). *hanyinger*
1b. valami inspector-szeru helper osztaly hasznalata a (cond)-ban.
2. warper osztaly + 1. pont. *a latszat csal*
3. new operator overloading? *nem ertek hozza, de utanna nezek*
(Remelem nem RTFM lesz a valasz... ;)
Udv/Pok
1. Konkretan az en esetemben fajlokat kell megnyitni; ezek strukturaja
hatarozza meg az objektum tipusat. A dontes nem egy egyszetu
sztring-egyenloseg megallapitasanak kerdese, amit (bar nagyot vetkezve)
akar a konstruktor meghivasa elott is el lehetne vegezni.
2. Maganba is kerek egy CC-t. Kosz.
|