Diskuze: Neznámá chyba

C++ C a C++ Neznámá chyba

Avatar
Frunta
Redaktor
Avatar
Frunta:

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
:

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
:

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
Redaktor
Avatar
Odpovídá na
Frunta:

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
:

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
Redaktor
Avatar
Odpovídá na
Frunta:

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

 
Nahoru Odpovědět 19.1.2013 22:09
Avatar
Odpovídá na
Lukáš Hruda (Luckin):

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
:

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
Odpovídá na
Lukáš Hruda (Luckin):

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.