jak zacházet s CPP soubory a hlavičkové soubory

hlasů
1

Mám trochu problém s záhlaví je a CPP souborů, jsem začal vytvořením malého textu na hru a chtěl jsem, aby veškerou práci více jasnější tím, že vytvoří více souborů a oddělené soubory pro každou třídu (Player.cpp, Monster.cpp osobou atd..).

Tak jsem skončil s velkým množstvím #include směrnice je v každém souboru cpp (i se nepoužívají hlavičky zatím).

Potřeboval jsem rand funkci, tak jsem přidal stdlib pro každou třídu, a iostream třídy přehrávačem atd ..

tak jsem skončil s velkým množstvím dvoulůžkových a třílůžkových použití stejné knihovny, co bych měl udělat, aby se mu vyhnout? Je nějaký způsob, jak se tomu vyhnout vůbec? (Vytvoření samostatné třídy pro náhodný například zvyklý pracovat, protože jsem je třeba jej přidat do tříd i nějaké způsoby).

Díky předem!

EDIT: Ale když mám něco takového ?:

main.cpp -> Player.h -> stdlib.h

     -> Monster.h -> stdlib.h

Co mohu udělat, aby stdlib.h být ve všech tříd bez předchozího upozornění nebo chyby?

Jinými slovy, jak mohu vytvořit záhlaví, aniž by je hodně stejné knihovny v každé se? (Player a netvor jsou různé třídy a oba potřebují stdlib, co bych měl udělat, aby zahrnovala jen jednou této knihovně?)

Položena 11/10/2013 v 13:54
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Opravte mě, jestli jsem si to špatně ... Váš čelí chyby redefinice v důsledku včetně vlastních CPP souborů na více místech.

Jeden způsob, jak by bylo vytvořit záhlaví pro kód soubory, které je třeba zahrnout jinde a deklarovat své vývozy v tomto záhlaví. Ujistěte se, že vývozy jsou definovány jednou za vytvořený objekt pomocí preprocesoru

// some_file.h
#ifndef SOME_FILE_H
#define SOME_FILE_H
...
//export declarations
...
#endif

nebo se vyhnout, včetně váš kód soubory a deklarovat funkce, které potřebujete jako ‚extern‘

//your_functions.cpp
int some_function( int arg1 )
{
    ...
}

a

//other_file.cpp
extern int some_function( int );
Odpovězeno 11/10/2013 v 14:08
zdroj uživatelem

hlasů
1

Jak to myslíš s „Osobně jsem nepoužil hlavičky ještě?“ Musíte vytvořit záhlaví pro vás deklarace funkce / definic tříd. Neexistuje žádný jiný rozumný způsob.
Dále musíte přečíst o zahrnují stráže . Zahrnují stráže zajistit, aby hlavička není zahrnuta více než jednou, přímo i nepřímo.
V téměř všech moderních překladačů můžete použít #pragma oncenamísto starého #if !defined... stylu.

Odpovězeno 11/10/2013 v 14:04
zdroj uživatelem

hlasů
1

To nemusí být nejlepším způsobem, ale to je tak, jak jsem to vždycky Mám soubor main.cpp který nazývá ‚MasterHeader.h‘ soubor a uvnitř tohoto souboru záhlaví mám všechny ostatní hlavičky, takže v hlavním pouze I mají jednu linku, která volá všechny mé další záhlaví a záhlaví třídí, co hlavičky, co potřebuji.

Tak

main.cpp> MasterHeader.h> myHeader.h, myOtherHeader.h, thisHeader.h

Atd

Odpovězeno 11/10/2013 v 13:57
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more