Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
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
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, 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: 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, 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


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Densità energetica triplicata ris...
Nuove regole per l'AI di Meta: niente co...
iPhone 16 in Bianco e altri 2 colori a s...
Microsoft rimuove il blocco dell'aggiorn...
TikTok 'MAGA al 100%': Trump vuole modif...
Stuttering e freeze sui laptop da 3.000 ...
Government Data Intelligence for Agricul...
iPhone 17e limitato per non oscurare iPh...
Windows 11 può usare l'IA per cla...
Microsoft Edge diventa più sicuro...
Yakuza Kiwami 3: il nuovo trailer mostra...
Geely lo fa davvero: auto con garanzia a...
'Troppi videogiochi': ecco perché...
Videogiochi e TV aumentano la concentraz...
OneXFly Apex è la console portati...
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: 12:55.


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