Pomoc s #include – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Pomoc s #include – C / C++ – Fórum – Programujte.comPomoc s #include – C / C++ – Fórum – Programujte.com

 

kadet
~ Anonymní uživatel
23 příspěvků
28. 11. 2009   #1
-
0
-

Mám projekt který jsem původně psal do jednoho souboru, ale teď jsem se rozhodl ho rozdělit. Mám problém, že nevím co do čeho mám pomocí include vkládat. Mám čtyři hlavičkové soubory = čtyř třídy Mapa,Nepritel,Hrac,Bod.

Třída Mapa ve svých funkcích obsahuje jako parametry ukazatele na objekty tříd Nepritel,Hrac,Bod.
Třída Nepritel ve svých funkcích obsahuje jako parametr ukazatel na objekt Hrac.
Třída Bod ve svých funkcích obsahuje jako parametry ukazatele na objekty tříd Hrac,Mapa.



Nahlásit jako SPAM
IP: 88.146.143.–
crAzY^
~ Moderátor
+10
Grafoman
28. 11. 2009   #2
-
0
-

stačí když před každou třídu uděláš tzv. forward deklaraci tříd:

For example:

class Nepritel;

class Hrac;
class Bod;

//a ted tvoje trida
class Mapa {
....
};


ale pak musíš ty všechny hlavičkové soubory vložit do nějakého zdrojového souboru

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
kadet
~ Anonymní uživatel
23 příspěvků
28. 11. 2009   #3
-
0
-

Asi jsem se špatně vyjádřil... Zde přikládám zdrojový kód.

Nahlásit jako SPAM
IP: 88.146.143.–
midin0
Věrný člen
28. 11. 2009   #4
-
0
-

Hm, to není zrovna nejlepší dělení.. Co includovat všechno všude? .-)

Nahlásit jako SPAM
IP: 90.177.64.–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
kadet
~ Anonymní uživatel
23 příspěvků
28. 11. 2009   #5
-
0
-

To midin : moc nechápu jak to myslíme, mohl byste poupravit zdroják a poslat?

Nahlásit jako SPAM
IP: 88.146.143.–
midin0
Věrný člen
28. 11. 2009   #6
-
0
-

To kadet : Moc nechápu, jak to myslíte Vy. Pokud Vám jde pouze o to, aby byly soubory správně includované, tak includujte do každého headeru všechny ostatní headery, nebo lépe použijte forward deklaraci tříd, jak výše poradil kolega. Pokud máte jiný problém, popište ho přesněji.

Nahlásit jako SPAM
IP: 90.177.64.–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
crAzY^
~ Moderátor
+10
Grafoman
28. 11. 2009   #7
-
0
-

To kadet : ta forward deklarace je opravdu lepší řešení...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
kadet
~ Anonymní uživatel
23 příspěvků
28. 11. 2009   #8
-
0
-

tak jsem to zkusil includovat trochu jinak, ale pořád to nejde zkompilovat, asi je to tím, že se některé soubory includují 2x, ale nevím jak to upravit, aby to fungovalo :(

Nahlásit jako SPAM
IP: 88.146.143.–
Matrix17
~ Anonymní uživatel
300 příspěvků
29. 11. 2009   #9
-
0
-

Aby se neinkludoval jeden soubor dvakrát, tak se používá tohle:



#ifndef JMENO_H_
#define JMENO_H_

zdrojový kód

#endif


Jmeno se obvykle dává název toho souboru, co se inkluduje ale je celkem fuk jak to nazveš.

Nahlásit jako SPAM
IP: 78.156.128.–
kadet
~ Anonymní uživatel
23 příspěvků
29. 11. 2009   #10
-
0
-

Díky za radu, ale to tam mám. Nejspíš jsem měl ten projekt rozdělit už na začátku, protože teď nevím jak to mám udělat :)

Nahlásit jako SPAM
IP: 88.146.143.–
crAzY^
~ Moderátor
+10
Grafoman
29. 11. 2009   #11
-
0
-

To kadet : použij tu forward deklaraci jak jsem psal

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
kadet
~ Anonymní uživatel
23 příspěvků
29. 11. 2009   #12
-
0
-

Zkus si stáhnout ten zdroják bludiste - Kopie.rar , prosím, a pouprav ho. Když jsem tam dal tu forward deklaraci tak se třídy inkludovaly správně (pokud byli jejich implementace v hlavním souboru), když jsem implementace rozdělil do souborů podle názvu tříd, tedy v mapa.cpp jsem měl implementaci třídy a v mapa.h deklaraci třídy tak to nefungovalo, protože nekteré třídy jsou navzájem provázány parametry ve kterých přijímají ukazatel na objekt jiné třídy. Teď prostě nevím jak ošéfovat ty *.cpp soubory pomocí #include, aby to všechno fungovalo.

Nevíte někdo o nějaké stránce na internetu, která se zabývá touhle problematikou? Našel jsem něco na linuxsoft.cz http://www.linuxsoft.cz/article.php?id_article=704 , ale tam je to bez OOP.

Nahlásit jako SPAM
IP: 88.146.143.–
crAzY^
~ Moderátor
+10
Grafoman
29. 11. 2009   #13
-
0
-

vypadá to, že to máš udělané správně, ale nemůžu to zkontrolovat, protože nemám nainstalované allegro; kdyžtak napiš co ti to hází za chybu...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
kadet
~ Anonymní uživatel
23 příspěvků
29. 11. 2009   #14
-
0
-

Tohle to hází...

Nahlásit jako SPAM
IP: 88.146.143.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

Include — založil Zelenáč

Include — založil maaaca

Include — založil Michal115

Include z GET — založil matouch

Problém s include — založil killermax

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý