C++ probléma(osztályokkal)
2005-03-31T19:01:18+02:00
2005-04-01T09:09:55+02:00
2022-07-27T04:08:28+02:00
  • Ahogy boj mondta, az angol megfelelojere voltam kivancsi. De legalabb most mar tudom, h ennek van valami hivatalos neve (allamanyorszem, beszarok, asszem meg hetvegen is ezen fogok rohogni.:))
    Mutasd a teljes hozzászólást!
  • Ha jól sejtem, akkor az angol eredetije: include guard.
    Mutasd a teljes hozzászólást!
  • Szivesen
    Mutasd a teljes hozzászólást!

  • Hát emlékeztem hogy valami ilyesmi van, köszi a segítséget, tényleg ez a megoldás, valahol olvastam is róla, csak túl vastag a könyv :))))!!!!

    Ezer köszönet. A probléma megoldva.

    hála:


    KoKo
    Mutasd a teljes hozzászólást!
  • Szerintem zmb668 arra volt kiváncsi, milyen angol szóbol jött ez a kínfordítás:)
    Mutasd a teljes hozzászólást!
  • Az állományőrszemek arra valóak, hogy ne szegjük meg a One-Definition-Rule-t, pl. egy osztály defínició egyszer szerepeljen:

    A.h:
    #ifndef MY_A__H
    #define MY_A__H

    class A {...};
    #endif

    Ha többször include-olnád a headert, többször definiált lenne az A osztály, ha nem lennének az állományőrszemek a preprocesszornak.
    Mutasd a teljes hozzászólást!
  • Egy kerdes. Mi az isten az az allomanyorszem? :)
    Mutasd a teljes hozzászólást!
  • Elorevetett deklaraciot (forward declaration) szoktak ilyen esetekben alkalmazni, pointerekhez ugyanis csak deklaracio szukseges definicio nem.

    Megodas:

    A felhasznalo osztaly elott deklarald a felhasznalt osztalyt pl:

    class A;

    class B {
    ...
    A* first;
    A* sec;
    ...
    }

    Remelem jol tevedek.


    ui: Szerintem ilyen jellegu kerdeseket erdemesebb lenne a tudastarba feltenni. Egyreszt tobben nezik, masreszt arra van :)
    Mutasd a teljes hozzászólást!
  • Üdv mindenkinek!

    A problémám a következő. Ha alapnak tűnik ne szóljatok meg érte.

    Adott két osztály, legyen A és B.

    Az A osztály rendelkezik két B típusú adattaggal, pontosabban két B típusú mutatóval, vagy referenciával, kinek melyik tetszik. Igy tehát kell egy #include "bdeklaracio.h"

    Nos a B osztály rendelkezik a következővel
    vector <A*> avektor(0);
    Nos ezt majd később akarom változtatni. Hogy láthassa, nyilván kell #include "adeklaracio.h"

    Na itt jön a probléma, mert ugyanis mégsem látja. Amit értek hogy miért, hiszen ha pl. A osztályban az includba belép, akkor elakad B vizsgálatakor, amikor ott egy A tipusú elemet keresne, hiszen az akkor még nincs deklarálva.

    Állományőrszemeket használok ott nincs ilyen gond.

    A probléma véleményem szerint, hogy C++-ban az osztályok nevei is csak a deklarációjuktól látszanak. Javaban nem merül fel ez a gond, mert ott mindenhol látszanak. Kérdés: Ki lehet ezt kerülni valahogy? Vagy van triviális megoldás? Igazából nem rég óta foglalkozom c++-al.

    No ennyi lenne.

    Előre is köszi a válaszokat.

    KoKo
    Mutasd a teljes hozzászólást!
Címkék
abcd