Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C++] Moduli

  1. #1
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657

    [C++] Moduli

    Studiando il mio libro di c++ sono arrivato nella parte in cui parla dei moduli. C'è un paragrafo che parla su come si sviluppano gli header.
    Ho fatto come dice il libro e ho creato la mia lib dove nel file .h ho messo i prototipi delle funzione, nel file .cpp del file di intestazione ho messo i corpi delle funzioni. Credo che questa procedura sia alquanto normale.
    Nel momento in cui io voglio sfruttare la mia lib e faccio #include "nomelib.h" e richiamo le sue funzioni, il linker mi da questo errore:
    Undefined symbol euro_lire (near&) in module euroconv2.cpp

    Una cosa così. Come avete capito sto cercando di fare un semplice euroconvertitore, anche perché è dall'inizio dell'anno che lavoro con c++ imparo da solo.

    Cosa posso fare per utilizzare la mia lib e far scomparire quell'errore?

    Grazie e buona domenica a tutti!!

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Anche il mio libro diceva di fare così, io non ci sono mai riuscito!!
    Mi dava sempre errori strani!
    Ora metto tutta la classe (intestazioni e funzioni) in un unico file .h e va tutto bene.
    Del tipo:
    codice:
    #ifdef  CLASSE_H
    #define CLASSE_H
    class Classe{....};
    
    Classe :: ....metodi....
    #endif
    ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Anche il mio libro dice di mettere #ifndef e #endif però fa anche esempi senza di loro. Io nn ho ancora capito a ke servono. Cavolo: è il primo argomento che mi sta venendo difficile da capire

  4. #4
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Credo sia un messaggio al precompilatore per dirgli quello che sta che sta per compilare. Detto malissimo, ma credo sia così!
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  5. #5
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    E' un metodo per evitare di ridefinire più volte la stessa classe.

  6. #6
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    #ifndef #define e #endif servono semplicemente ad evitare un problema detto "inclusione multipla"..
    come avrete capito attraverso l'inclusione, nei vari passi che ti permettono di creare il file eseguibile (passi che vengono eseguiti attraverso la semplice chiamata al compilatore) pezzi di codice vengono ricopiati in un unico file. Immagina ora che su + file sia stata inclusa la libreria iostream: in quel file ripeti + volte lo stesso codice??? con quelle notazioni si evita questo probl..

    quello poi scritto dopo (CLASSE_H) non è nient'altro che una convenzione...

    ora, sperando che nel nomelib.cpp sia stato incluso il nomelib.h, tieni presente che l'inclusione avviene in due diversi "modi":

    #include <nomelib.h>

    richiama la libreria da una cartella standard (quella dove è installato il dev)

    #include "nomelib.h"

    richiama la libreria dalla cartella ove si è memorizzato il prog..

    spero vi siano utili questi consigli, altrimenti avrai fatto un errore di prog..

    un'altra cosa: devi compilare il tutto creando un project..

    a presto!!
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

  7. #7
    Utente di HTML.it L'avatar di pixer
    Registrato dal
    Oct 2000
    Messaggi
    614
    Lo standard ANSI C prevede anche l'utilizzo di

    #pragma once

    al posto della coppia #ifndef / #endif
    MySQL Worker - The OpenSource Multiplatform MySQL database Administrator (C++ powered)
    .:[ It resumes the development !! ]:.


  8. #8
    Utente bannato
    Registrato dal
    Jun 2003
    Messaggi
    3,657
    Angioletto...io nn uso dev, ma il buon vecchio ide turbo c++ della borland (mi pare). Quello in modalità DOS. Obsoleto ma utile ai miei scopi

  9. #9
    Utente di HTML.it L'avatar di Angioletto
    Registrato dal
    Jan 2004
    Messaggi
    1,246
    scusa, FinalFantasy, ma avevo letto [c++] e non avevo pensato ad altri compilatori!!
    Ho una domanda per Pixer: quando creo un file da includere dovrei quindi scrivere:

    # pragma once
    # define

    giusto??
    Per liquidare un popolo si comincia con il privarli della memoria.Si distruggono i loro libri, la loro cultura, la loro storia. E qualcun’ altro scrive loro altri libri, li fornisce di un’altra cultura, inventa per loro un’altra storia. (Milan Kundera)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.