Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    [C++] usare una struct come tipo di un parametro

    Posto solo le parti di codice interessate: ho una prima struct Impiegato dove l'unico costruttore che definisco ha dei parametri:

    codice:
    struct Impiegato {
      Impiegato( /* parametri */ ) { }
    };
    e altrove ho una funzione che prende un parametro di tipo Impiegato per riferimento costante:

    codice:
    funzione(const Impiegato& i) { }
    Quest'ultima riga causa un errore di compilazione che dice di non trovare il costruttore senza argomenti di Impiegato (giusto, non l'ho definito). Ma perché è necessario fornirlo per usare la relativa struct come tipo di un parametro?
    Nel mio caso l'ho volutamente omesso perché non mi sembrava sensato un Impiegato senza nome, cognome e altri dati (tutte cose per le quali non esiste un "valore di default"), ma oltre a questo vorrei sapere il perché di questa necessità.

    Devo per forza usare i puntatori?

    Ho cercato sul web e sul forum ma non ho trovato nulla, forse cerco le parole sbagliate.

    Grazie.

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    E' perchè usi const a caso:

    codice:
    funzione(Impiegato& i) { }

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da ramy89
    E' perchè usi const a caso:

    codice:
    funzione(Impiegato& i) { }
    Non cambia nulla senza il const .
    E' errato usare quella dicitura per passare per riferimento qualcosa che non si vuole venga modificato?

    Grazie

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Allora è errato il contesto, cosa che non si può capire se non posti il codice, in particolare l' istruzione dove fai la chiamata a procedura (o funzione).

  5. #5
    Di base nel codice che hai postato non c'è nulla di sbagliato (e il const lì è corretto), probabilmente il pasticcio sta altrove; prova a postare un esempio completo che presenta il problema.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Comunque il tipo di ritorno va specificato:
    codice:
    void funzione(Impiegato& i) { }

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da ramy89
    Comunque il tipo di ritorno va specificato:
    codice:
    void funzione(Impiegato& i) { }
    Hai ragione, l'ho solo dimenticato nel copia e incolla.

    Comunque ho risolto, il messaggio del compilatore era illusorio... la firma della funzione che ho postato guarda caso era proprio la prima linea di codice del file, ma in realtà l'errore era nell'header che includevo, dove dichiaravo una variabile di tipo Impiegato senza inizializzarla... da tutt'altra parte insomma.

    Userò un puntatore, grazie mille per le risposte.

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.