Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-01-2007, 20:05   #1
Gio Games
Senior Member
 
Iscritto dal: Jul 2006
Città: Fossombrone (Pesaro e Urbino)
Messaggi: 405
[c++] Problema con #include

Salve a tutti. Ho un problema durante la compilazione di un mio progetto formato da più file. Ho la necessità di includere un sorgente all'interno di uno che contiene già l'inclusione a quest'altro. Aspettate, mi spiego con un esempio. Ho il file A che contiene l'include al file B. Ora nel file B mi servirebbe fare l'include al file A ma al momento della compilazione mi si presentano centinaia di errori. Probabilmente sto cercando di fare una cosa impossibile ma anche se così fosse vi sarei grato se poteste spiegarmi bene cosa succede. Grazie a tutti per le eventuali risposte.
Gio Games è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2007, 20:28   #2
reptile9985
Senior Member
 
L'Avatar di reptile9985
 
Iscritto dal: Jul 2004
Messaggi: 1685
Codice:
//file "nome.h"
#ifndef NOME_H
#define NOME_H
//tutti gli include che vuoi

//codice

//fine file
#endif
imposta in questo modo i tuoi header
reptile9985 è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2007, 20:49   #3
Gio Games
Senior Member
 
Iscritto dal: Jul 2006
Città: Fossombrone (Pesaro e Urbino)
Messaggi: 405
Quote:
Originariamente inviato da reptile9985
Codice:
//file "nome.h"
#ifndef NOME_H
#define NOME_H
//tutti gli include che vuoi

//codice

//fine file
#endif
imposta in questo modo i tuoi header
Ho già impostato così i file. Solo che io ho tra gli include i .cpp non i .h. Potrebbe essere questo il problema? Premetto che finora questa scelta non mi ha dato problemi.
Gio Games è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 09:04   #4
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Gio Games
Ho già impostato così i file. Solo che io ho tra gli include i .cpp non i .h. Potrebbe essere questo il problema? Premetto che finora questa scelta non mi ha dato problemi.
beh t'é andata bene mi sa. Non che sia vietato includere i .cpp ma mi sembra il sintomo di un'analisi sbagliata. Magari un .cpp potrebbe includere un altro .cpp perché per motivi di dimensioni si é scelto di spezzarlo in 2 (in C l'ho fatto ma in C++ non me lo sogno neanche) ma non mi dire che un tuo .h include un .cpp ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 10:09   #5
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
brrrrr rabbrividisco
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 13:52   #6
Gio Games
Senior Member
 
Iscritto dal: Jul 2006
Città: Fossombrone (Pesaro e Urbino)
Messaggi: 405
Quote:
Originariamente inviato da trallallero
beh t'é andata bene mi sa. Non che sia vietato includere i .cpp ma mi sembra il sintomo di un'analisi sbagliata. Magari un .cpp potrebbe includere un altro .cpp perché per motivi di dimensioni si é scelto di spezzarlo in 2 (in C l'ho fatto ma in C++ non me lo sogno neanche) ma non mi dire che un tuo .h include un .cpp ?
No è un .cpp che include un altro .cpp. Mi puoi dire gentilmente perchè è "un'analisi sbagliata" includere un .cpp?
Grazie mille per la risposta comunque
Gio Games è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 14:05   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Gio Games
No è un .cpp che include un altro .cpp.
Appunto .... è sbagliato.

Quote:
Originariamente inviato da Gio Games
Mi puoi dire gentilmente perchè è "un'analisi sbagliata" includere un .cpp?
Perché nei file sorgente .c/.cpp ci sono le definizioni di variabili e funzioni, mentre nei file di include .h (o .hpp o chiamali come vuoi), ci vanno solamente le dichiarazioni che non comportano una occupazione di memoria, in pratica solo dichiarazioni di macro/strutture, prototipi di funzioni ecc...

Immagina che in un file .cpp ci sia:
int pippo;

e che 2 altri sorgenti .cpp includano il .cpp sopra. Sai che succede? Casino, perché in entrambi i moduli oggetto generati c'è la variabile pippo!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 14:36   #8
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Gio Games
No è un .cpp che include un altro .cpp. Mi puoi dire gentilmente perchè è "un'analisi sbagliata" includere un .cpp?
Grazie mille per la risposta comunque
m'hanno preceduto

EDIT: in C il discorso é uguale ma a me é capitato di avere un limite sulle righe del file (Turbo C o Tandem, non ricordo) quindi ho diviso il file in 2, in uno le funzioni, nell'altro il main ed altro.
Ma sicuramente ero alle prime armi perché adesso farei una libreria col file delle funzioni e il modulo del main linkato con essa
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve

Ultima modifica di trallallero : 22-01-2007 alle 14:40.
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 14:45   #9
Gio Games
Senior Member
 
Iscritto dal: Jul 2006
Città: Fossombrone (Pesaro e Urbino)
Messaggi: 405
Quote:
Originariamente inviato da trallallero
m'hanno preceduto

EDIT: in C il discorso é uguale ma a me é capitato di avere un limite sulle righe del file (Turbo C o Tandem, non ricordo) quindi ho diviso il file in 2, in uno le funzioni, nell'altro il main ed altro.
Ma sicuramente ero alle prime armi perché adesso farei una libreria col file delle funzioni e il modulo del main linkato con essa
Il fatto è che io ho due classi. Nella prima mi serve utilizzar la seconda in una funzione e nella seconda mi serve utilizzare la prima in un altra funzione. Il fatto è che compilando mi da innumerevoli errori e non so come risolvere
Gio Games è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 14:54   #10
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da Gio Games
Il fatto è che io ho due classi. Nella prima mi serve utilizzar la seconda in una funzione e nella seconda mi serve utilizzare la prima in un altra funzione. Il fatto è che compilando mi da innumerevoli errori e non so come risolvere
allora potrebbe essere un problema di makefile.
Le classi é giusto che stiano in 2 files diversi e che abbiano i relativi .h ma il make lo deve sapere.
Posti l'istruzione per compilare o tutto il makefile ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 16:13   #11
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Quote:
Originariamente inviato da Gio Games
Il fatto è che io ho due classi. Nella prima mi serve utilizzar la seconda in una funzione e nella seconda mi serve utilizzare la prima in un altra funzione. Il fatto è che compilando mi da innumerevoli errori e non so come risolvere
non so te ma io rivedrei un poco la struttura delle tue classi. sicuramente c'è una soluzione migliore.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 18:12   #12
Gio Games
Senior Member
 
Iscritto dal: Jul 2006
Città: Fossombrone (Pesaro e Urbino)
Messaggi: 405
Quote:
Originariamente inviato da trallallero
allora potrebbe essere un problema di makefile.
Le classi é giusto che stiano in 2 files diversi e che abbiano i relativi .h ma il make lo deve sapere.
Posti l'istruzione per compilare o tutto il makefile ?
Quindi dici che dovrei creare i .h e includere quelli vero?
Per quanto riguarda il makefile: in visual studio dove posso ricavare le istruzioni per il compilatore?
Gio Games è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 19:43   #13
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
Quote:
Originariamente inviato da vizzz
brrrrr rabbrividisco
tu rabbrividisci? dovevi vedere la mia faccia quando l'ho visto fare al mio prof di info nel laboratorio
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 22:58   #14
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Gio Games
Il fatto è che io ho due classi. Nella prima mi serve utilizzar la seconda in una funzione e nella seconda mi serve utilizzare la prima in un altra funzione. Il fatto è che compilando mi da innumerevoli errori e non so come risolvere
Premesso, come ti hanno già suggerito, che andrebbe un pò rivista la struttura delle 2 classi, puoi risolvere il problema o con la forward declaration oppure se non ti servono variabili di classe, potresti includere i rispettivi header nei file cpp.

Forward declaration:
Codice:
/*File A.h*/
#ifndef _A_H
#define _A_H
#include "B.h"
class A
{
  ...
private:
  B * b;
};
#endif

/*File B.h*/
#ifndef _B_H
#define _B_H
class A;

class B
{
  ...
private;
  A * a;
};
#endif
Includendo gli header nei cpp
Codice:
/*File A.cpp*/
#include "A.h"
#include "B.h"

A::MetodoCheUsaB()
{
  B b();
  ...
}

/*File B.cpp*/
#include "B .h"
#include "A.h"

B::MetodoCheUsaA()
{
  A a();
  ...
}
tomminno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Snap e Perplexity unite: dal prossimo an...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
'Non può essere un robot': l'uman...
Monopattino elettrico Segway Ninebot Max...
Syberia Remastered è disponibile:...
Sony scopre che tutti i modelli AI hanno...
Amazon nasconde un -15% su 'Seconda Mano...
Due occasioni Apple su Amazon: iPhone 16...
Verso la fine della TV tradizionale? I g...
Cassa JBL a 39€, portatili, smartphone, ...
Cometa interstellare 3I/ATLAS: la sonda ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:37.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v