C++ vzajomne inkludovanie suborov

Programovacie jazyky, rady, poradňa...
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

C++ vzajomne inkludovanie suborov

Príspevok od používateľa reDo »

potrebujem navzajom inkludovat 2 hlavickove subory, nevie prosim ako na to? lebo ked to spravim normalne tak v jednom mi to vypisuje chybu ze nazov triedy(v mojom priprade) nebola deklarovana, prosim mate niekto nejake riesenie :roll: ?
//edit okrem priameho vlozenia
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa BX »

Ukáž ako to robíš.
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa c-ice »

a nezdá sa ti to tak trochu hlúpost ? sprav tretiu triedu kde tie dva spojis alebo si to vymysli inak lebo toto je podla mna zlý návrh
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8224
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa harrison314 »

Ak pouzivas gcc, alebo g++ tak
uprav svoje h subory takto

Kód: Vybrať všetko

#ifndef nazovsuboru
#define nazovsuboru 1


// tvoj subor

#endif
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa johny3212 »

Neviem presne o co ti ide. Je pravda, ze s mnozstvom suborov vznika s hlavickovymi bordel, riesi sa to jednoducho.
Sprav si jeden hlavickovy subor napr. BaseDeclaration.h a tam daj vsetky standardne ceckovske hlavickove a budes vsade volat iba ten BaseDeclaration.h.
Potom si sprav napr. CoreDeclaration.h a tam daj hlavickove tvojich tried. Potom si mozes spravit CoreClassDeclaration.h a tam das deklaracie tried. Potom CoreDeclaration.h budes volat v *.cpp a CoreClassDeclaration.h vo *.h. Taketo riesenia sa pouzivaju, ak chces nieco ine, tak chces urcite spravit nieco zle :). Ukaz co chces spravit, nech ta odhovorim od toho :D.

Triedy si daj generovat automaticky, je to lepsie, nech to vypada ako pisal harrison314.
Triadka.h

Kód: Vybrať všetko

#ifndef TRIEDKA_H_
#define TRIEDKA_H_

class Triadka
  {
public:
  Triadka();
  virtual ~Triadka();
  };

#endif // TRIEDKA_H_ 
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa reDo »

mam tu dat vsetkych 11 suborov cpp + hpp ci len tie ktore mi robia problem?
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa johny3212 »

Sprav to tak ako som ti pisal :). Priklad.

BaseDeclaration.h

Kód: Vybrať všetko

#include <iostream>
#include <fstream>
CoreDeclaration.h

Kód: Vybrať všetko

#include "Triadka.h"
#include "Triadka2.h"
...
CoreClassDeclaration.h

Kód: Vybrať všetko

class Triadka;
class Triadka2;
...
Triedka2.h

Kód: Vybrať všetko

#ifndef TRIEDKA2_H_
#define TRIEDKA2_H_
#include "BaseDeclaration.h"
#include "CoreClassDeclaration.h" //tu sa vola class declaration
class Triadka2
  {
public:
  Triadka2();
  virtual ~Triadka2();
  };
#endif // TRIEDKA2_H_ 
Triedka2.cpp

Kód: Vybrať všetko

#include "CoreDeclaration.h" //tu sa vola header declarations
  Triedka2::Triedka2()
 {
 }

 ~Triedka2::Triedka2()
 {
 }
Ked si spravis takyto pekny system, nebude ti to robit k...iny :). Dufam, ze to ale chapes :).
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa reDo »

no ok ale aj tak sem dam pre istotu zdrojaky aby ste sa mi pozreli na navrh trosku lebo je to moj prvy program OOP :|
Prílohy
sources.zip
(5.75 KiB) 18 stiahnutí
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa johny3212 »

Ja som iba tak nahliadol do tvojich kodov a taka otazka, dufam, ze chapes vyznamu slova "static" v C++ :). Lebo OOP oproti klasik C, nie je velky funkcny rozdiel, v podstate OOP predstavuje iba nejake zprehladnenie kodu (premennych a funkcii) do nejakych oddelenych skupin :). Ked vytvoris objekt, tak sa ti postupne vytvaraju nove miesta v pamati pre vsetko, co ta trieda obsahuje. ALE !!! ak mas v triede nejaku premennu a ta je static a vytvoris viac objektov, tak? Skus povedat co sa ti stane :), hmm?. Static je paradna vec, ale pozor na jej pouzivanie.
reDo
Star
Star
Používateľov profilový obrázok
Príspevky: 661
Registrovaný: 26 apr 2009, 18:36
Bydlisko: 00100100
Kontaktovať používateľa:

Re: C++ vzajomne inkludovanie suborov

Príspevok od používateľa reDo »

static premenne v triedach su pre vsetky objekty danej triedy spolocne :), ja viem co robim...vacsinou :D

//autoeditácia príspevku (11 Máj 2011, 20:03)
o tom ze mozem niekde dat len

Kód: Vybrať všetko

class NazovTriedy;

a potom inde jej definiciu som nevedel a ani nevidel doteraz, diky :)

//autoeditácia príspevku (12 Máj 2011, 14:42)
diky johny funguje to
Napísať odpoveď