Newsgroup: it.comp.lang.c++
Titolo: separare implementazione e definizione

salve a tutti.
volevo sapere quale č il modo corretto di dividere implementazione e
definizioni.
per esempio io ho fatto un programma che usa 2 classi: nomi.h e scacchiera.h
nella quali ho messo solo le definizioni mentre le implementazioni le ho
messe tutte e specifico TUTTE nel file gioco.cpp. inoltre in gioco.cpp č
contenuto anche il main del programma.
č corretto fare in questo modo?
riassumo perchč penso di nonessere stato chiaro: in gioco.cpp abbiamo le
include"nomi.h" e include"scacchiera.h" le implementazioni di tutte le
funzioni membro delle sopracitate classi ed infine il main.
a volte penso che non sia corretto e che sia piů corretto creare altri file
cpp nei quali mettere tutte le implementazioni. una volta fatto ciň linkarle
al file dove c'č il mai con una sota di include. a quanto so č errato usare
include.
help me

 help me
E' errato includere nel file main i .cpp, isogna includere i.h e compilare
insieme i .cpp!
Ciao
Francesco

 ha scritto nel messaggio
news:bYm79.70028$n04.2...@twister2.libero.it...


 scrivo le impolementazioni delle funzioni membro. così è corretto?
Generalmente le implementazioni si scrivono in file diversi dal file che
contiene la funzione main, ma vanno compilati assieme!

 ha scritto nel messaggio
news:Liv79.73573$lu5.2...@twister1.libero.it...


 come si fa a compilarli insieme?
Dipende dal compilatore e / o dall'IDE usato.
Se usi il gcc su *nix:
- o impari a creare i makefile e ad usare ld, cosa che prima o poi dovrai fare
- oppure per iniziare ti puoi accontentare di questa riga di comando:
gcc -o prova -W -Wall -ansi -g3 main.c alfa.c
oppure di questa
g++ -o prova -W -Wall -g3 main.cpp beta.cpp
In pratica:
	gcc per i file C, g++ per i file C++
	-o prova vuol dire che il file risultante (l'eseguibile, da avviare con 
./prova) sara' chiamato prova
	-W -Wall indica di attivare i warning in compilazione (e' facoltativo, ma 
ti consiglio vivamente di attivarli)
	- ansi (solo per i C) indica di attenersi rigidamente allo standard, e di 
non usare estensioni non-standard quali long long (per il g++ non mi 
ricordo qual'e' l'opzione equivalente)
	- g3 indica di compilare con i simboli di debug attivi (per poter usare gdb 
o qualsiasi front-end ti aggradi)
	- dopo ci vanno tutti i file C / C++ (non gli header, solo i sorgenti) da 
compilare
Questo metodo presenta numerosi svantaggi, tra cui il fatto che ricompila 
ogni volta *tutti* i file anche se ne cambia solo uno o 2. Percio' ti 
consiglio di imparare ad usare i Makefile.
Se usi VC++ su Win:
Dalla domanda che hai postato mi sembri agli inizi col C++, quindi 
partiamo dalle basi:
- File -> New -> Project -> Win32 Console Project sul VC++ 6
	empty project (o qualcosa del genere)
- File -> New -> Project -> C++ (a sinistra) Win32 Executable (a destra), 
poi nelle proprieta' del progetto come tipo scegli Console e empty project 
(non mi ricordo i nomi esatti, indicativamente sono qualcosa di simile) 
sul VC++ 7 (o .NET che dir si voglia) (sto un po' esagerando con le 
parentesi vero? ;-))
Poi ogni volta che vuoi aggiungere un file fai file -> new -> C++ (o C) 
source file (o header) e inizi a scriverci... Fa tutto lui, basta che 
compili con F7 e lanci con F5.
Se usi il Borland non ti so aiutare, mentre se usi il Dev - C++ la storia 
e' molto simile a quella del VC, quindi dovresti riuscire a cavartela.
Comunque ti consiglio di iniziare a studiare seriamente l'help in linea 
del tuo compilatore, prima di passare al C++ ;-) Ciao.
-- 
Andrea Bergia - studente
Linux Registred User #281550

 come si fa a compilarli insieme?
Se posso intromettermi, credo che la soluzione più corretta è di avere i 
file:
nomi.h
nomi.cpp (include nomi.h e implementa cio che vi e' definito)
scacchiera.h
scacchiera.cpp (include scacchiera.h e implementa cio che vi e' definito)
gioco.cpp (include nomi.h e scacchiera.h e contiene il main)
Per compilarli tutti assieme, presumendo che il comando per lanciare il 
compilatore sia "c++", si fa semplicemente così:
c++ nomi.cpp scacchiera.cpp gioco.cpp
Spero di essere stato utile.
-- 
Mauro Mazzieri
se non vuoi che tuo figlio si comporti come Bart Simpson,
smetti di comportarti come Homer
                -- Matt Groening

vi ringrazio a tutti.
ps io uso Dev-C++
se qualcuno ha altre info per me ne sarei grato
grazie