Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Frunta
Tvůrce
Avatar
Frunta:19.1.2013 15:09

Zdravím, dělám na objektové hře a narazil jsem na problém: kompilátor Dev C++ mi hlásí u jedné třídy chybu dvojitého definování funkcí. Já jsem si to ovšem několikrát prošel a nic jsem nenalezl. Zkoušel jsem i zapnout a vypnout program nebo CTRL+F11, nic však nepomohlo.
Přikládám celý projekt a obrázek, co mi kompilátor hlásí.
Nevím si rady a žádám vás o pomoc.

Projekt v .zip formátu: http://zekr.8u.cz/Hra.zip

Editováno 19.1.2013 15:10
 
Odpovědět
19.1.2013 15:09
Avatar

Neregistrovaný
Avatar
:19.1.2013 19:58

Zaprvé nepoužívej Dev C++, je to zastaralé a vůbec špatné IDE.
Zadruhé: Prosím, nauč se programovat než začneš dělat "složitou" hru. Začni s malými projekty než se pustíš do něčeho takového.
Zatřetí (konečně ti moje rada bude k něčemu): Chyba je v tom, že nepoužíváš takzvané "include guards" (promiň, pracuji převážně na mezinárodních projektech, tudíž nevim jak se tomu říká v češtině.)
Stručně řečeno to zabrání kompilátoru aby skompilovat header file více než jednou. (samozřejmě to tak úplně není, avšak říkám to tak pro zjednodušení. Kdybys o tom chtěl vědět víc, najdi si to někde na netu, je o tom hodně článků.)

#ifndef COKOLI //vetsinou nazev hlavickoveho souboru
#define COKOLI
#endif

A teď k tomu proč ti to hází ten error: Do main.cpp vkládáš "Hra.cpp". Místo toho tam vlož "Hra.h" a problém bude opraven (pokud do hra.h vložíš ten include guard).

 
Nahoru Odpovědět
19.1.2013 19:58
Avatar

Neregistrovaný
Avatar
:19.1.2013 20:01

PS:

#ifndef /*Vloz nazev hlavickoveho souboru sem*/
#define /*Vloz nazev hlavickoveho souboru sem*/

Vlož úplně na začátek hlavičkových souborů a

#endif

Úplně na konec.

 
Nahoru Odpovědět
19.1.2013 20:01
Avatar
Frunta
Tvůrce
Avatar
Odpovídá na
Frunta:19.1.2013 20:14

Děkuji za pomoc. Samozřejmě jsem nejdříve začínal na menších projektech a nyní se cítím schopen pustit se do něčeho takového. Problém byl vlastně v tom, že jsem se učil objektové programování na Javě a ne přímo na C++, tak jsem si neuvědomil tohle.
Mimochodem nenapadá mě vhodnější kompilátor než Dev-Cpp, např. Visual Studio by mě zbavilo toho, že bych mohl hru spustit na PC bez .NET framework.

 
Nahoru Odpovědět
19.1.2013 20:14
Avatar

Neregistrovaný
Avatar
:19.1.2013 21:49

Aha, tak to jo, tak v tom případě se omlouvám, že jsem byl tak arogantní.
Ohledně toho IDE: Není to tak. Musíš pochopit rozdíl mezi IDE a compilátorem.
IDE je v podstatě sada utilit (kompilátor, linker, debugger, popřípadě disassembler) která má programátorům usnadnit práci.
Kompilátor je utilita která zdrojový kód přeloží do strojového (stručně řečeno).
Pokud ti nevyhovuje kompilátor, který Visual Studio nabízí, můžeš si nastavit jakýkoli jiný (avšak standardní kompilátor Visual Studia patří mezi špici).
V každém případě pokud přejdeš na Visual Studio tak tvůj program určitě nebude požadovat nainstalovaný .NET FW.

 
Nahoru Odpovědět
19.1.2013 21:49
Avatar
Frunta
Tvůrce
Avatar
Odpovídá na
Frunta:19.1.2013 22:09

Dobře, zkusím tedy Visual Studio, děkuji za osvětlení.

 
Nahoru Odpovědět
19.1.2013 22:09
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na
Lukáš Hruda:20.1.2013 11:56

Dev-C++ je možná zastaralý, ale podle mě pořád jedno z nejlepších IDE pro C/C++. Osobně ho preferuju před Visual Studiem. Pak ještě Code::Blocks neni špatný IDE.

 
Nahoru Odpovědět
20.1.2013 11:56
Avatar

Neregistrovaný
Avatar
:21.1.2013 15:54

U malých projektů o to samozřejmě tolik nejde, ale když pracuješ u mezinárodního herního studia jako já tak funkce, které VS nabízí, oceníš (nemluvě o podpoře C++0x standardu (častěčně) a kvalitě intellisense).

 
Nahoru Odpovědět
21.1.2013 15:54
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na
Lukáš Hruda:21.1.2013 16:12

Já je VS nedělam hlavně proto, že muj notebook na kterym programuju na to neni výkonostně stavěnej. VS je docela pomalý a větší projekt se mi v něm kompiluje i přes minutu. Pro moje potřeby je Dev-C++ nejvhodnější, Code::Blocks používam jenom pro wxWidgets.

 
Nahoru Odpovědět
21.1.2013 16:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.