Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-01-2007, 19: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, 19: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, 19: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, 08: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, 09: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, 12: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, 13:05   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 13: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 13:40.
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 22-01-2007, 13: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, 13: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, 15: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, 17: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, 18:43   #13
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1060
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, 21: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


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
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: 21:31.


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