C++ probléma

Ez a téma lezárásra került a moderátor által. A lezárás oka: Tanulj meg a t�m�nak helyes, a probl�m�t j�l k�r�l�r� c�met adni!
C++ probléma
2010-04-10T17:05:52+02:00
2010-04-10T17:05:53+02:00
2022-10-27T19:05:39+02:00
  • Sziasztok!

    Szeretném segítségeteket kérni egy dologban, kezdő vagyok és egy beadandóhoz volna szükségem a válaszotokra:

    Egy heterogén kollekciós "stack" modellezést kell végrehajtanom és elakadtam benne.

    Ha létrehozunk egy ilyen osztályt:

    class elso { public: virtual void fgv1() {"csináld ezt"}

    Majd egy másikat:

    class masodik : public elso { public: void fgv1() { "csináld azt"} void fgv2() { "csináld amazt" }

    Azt tudom, hogy ha létrehozok egy:
    elso * objektum = new masodik;
    pointert,

    és meghívom az objektum->fgv1(); utasítást, akkor a "csináld azt" fordul le.

    Nincs valamilyen mód, amivel az "objektum" pointeren keresztül elérhetném a fgv2-t, ami a "csináld amazt" kódot futtatná le? Anélkül kellene, hogy definiálnám az "elso" osztályban és virtuálissá tenném.

    A problémám az itt konkrétan, hogy az itt nevezett "masodik" osztályom az template osztály, hogy minden beépített típusra használható legyen. De így, a tagfüggvényei más és más paraméterekkel/visszatérési értékekkel rendelkeznek, amit nem tudok deklarálni és virtuálissá tenni az "elso" osztályban.

    Az "elso"-t arra használom, hogy egy harmadikban lehessen tárolni egy tömbben mindenféle típusú adatot.

    Elsőnek próbálkoztam azzal, hogy az "elso" osztályt kihagytam, és a stack osztály(a legkülső, harmadik) tartalmazza rögtön a specifikus "masodik" osztályokat egy tömbben, de sajnos nem engedte a fordítóm. (VS2008)

    Második próbálkozásra megpróbáltam az "elso" osztályban is feltüntetni az "fgv2()" függvényt, azt űrlaposítani, majd virtuálissá tenni, de azt sem engedte, amit mondjuk valamennyire meg is tudok érteni...

    Jelen pillanatban kifogytam az ötletekből, lassan ott tartok, hogy lekörmölöm a forráskódba az összes specifikus osztályt.

    Segítségeteket előre is köszönöm!
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: Tanulj meg a t�m�nak helyes, a probl�m�t j�l k�r�l�r� c�met adni!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd