Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] Problemi di #include

    Salve a tutti!!
    Ho un problema con l'inclusione, in un file.cpp, di classi esterne necessarie per il corretto fuzionamento.
    Provo a spiegarmi con semplicità:
    ho 3 classi:
    base.h
    cl1.h
    cl2.h

    cl1.h e cl2.h includono entrambe base.h;
    Il file del main()(di nome exec.cpp) include sia cl1.h che cl2.h

    Beh..Quando vado a compilare mi da il seguente errore:

    In file included from cl1.h:10,
    from exec.cpp:5:
    base.h:28: redefinition of `class base'
    base.h:28: previous definition here
    In file included from cl2.h:10,
    from exec.cpp:5:
    base.h:28: redefinition of `class base'
    base.h:28: previous definition here
    andry80

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    prova a mettere all'inizio di base.h le seguenti due righe:

    #ifndef BASE_H
    #define BASE_H

    e alla fine del file metti:

    #endif


    questa cosa dovrebbe in generale esse fatta con tutti gli include file (cambiando di volta in volta BASE_H in base al nome del file)

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Originariamente inviato da anx721
    prova a mettere all'inizio di base.h le seguenti due righe:

    #ifndef BASE_H
    #define BASE_H

    e alla fine del file metti:

    #endif


    questa cosa dovrebbe in generale esse fatta con tutti gli include file (cambiando di volta in volta BASE_H in base al nome del file)
    :master:
    intendi:
    codice:
    #ifndef BASE_H
    #define BASE_H
    #include "base.h"
    #endif

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    No, quelle righe le devi mettere nel file base.h

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    Grazie Anx , funziona alla grande!!!
    Ti ringrazio


    andry80

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    6
    qualcuno mi spiega com'è che funzionano queste direttive,cosa fanno,e come risolvono il problema di Andry80!!Grazie

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da melos
    qualcuno mi spiega com'è che funzionano queste direttive,cosa fanno,e come risolvono il problema di Andry80!!Grazie
    È un 'idioma' utilizzato nei file di header per evitare i problemi di una inclusione multipla e si basa sulla definizione di una macro che ovviamente deve essere unica in tutto il progetto (e in genere appunto si usa NOME_H o __NOME_H__ o cose del genere).

    "se non è definito BASE_H, definisci BASE_H e prendi in considerazione il resto"

    È chiaro che una successiva inclusione fa in modo che la condizione #ifndef BASE_H sia "falsa", quindi nulla viene più preso in considerazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    6
    Grazie andbin...6 stato + che chiaro!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.