Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C++] passare riferimento a struttura

    Salve a tutti. Devo passare il riferimento alla struttura Manutenzione ad un costruttore.

    Ecco la struttura:
    codice:
    struct Manutenzione {
        ...
    }
    e l'oggetto che devo creare:
    codice:
    class wxDManutenzioneImp: public wxDManutenzione
    {
        public:
            wxDManutenzioneImp(wxFMezziImp *parent, Manutenzione &manutenzione);
    In fase di compilazione ottengo un errore:
    codice:
    error: uninitialized reference member 'wxDManutenzioneImp::manutenzione' [-fpermissive]|

    Come devo fare per passare il riferimento ad una struttura ad un costruttore?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Il prototipo del costruttore va bene.
    Se come variabile membro hai un:
    codice:
         ...
         Manutenzione &membro;
         ...
    devi usare la initialization list del costruttore:
    codice:
        public: 
    wxDManutenzioneImp(wxFMezziImp *parent, Manutenzione &manutenzione): membro(manutenzione);
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Scusami ma non capisco.Questo è l'header:
    codice:
    class wxDManutenzioneImp: public wxDManutenzione
    {
        public:
            wxDManutenzioneImp(wxFMezziImp *parent, Manutenzione &manutenzione);
    mentre questo è il .cpp

    codice:
    #include "wxDManutenzioneImp.h"
    
    wxDManutenzioneImp::wxDManutenzioneImp(wxFMezziImp *parent, Manutenzione &manutenzione) : wxDManutenzione(parent) {
    Come dovrei scrivere invece?

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Scusami ma non capisco.Questo è l'header:
    codice:
    class wxDManutenzioneImp: public wxDManutenzione
    {
        public:
            wxDManutenzioneImp(wxFMezziImp *parent, Manutenzione &manutenzione);
    
            // se hai una variabile membro siffatta:
            Manutenzione& manu;
    mentre questo è il .cpp

    codice:
    #include "wxDManutenzioneImp.h"
    
    wxDManutenzioneImp::wxDManutenzioneImp(wxFMezziImp *parent, Manutenzione &manutenzione) : 
        wxDManutenzione(parent),
        manu(manutenzione) {
    altrimenti il problema è da ricercarsi da un'altra parte, ossia nel modo in cui viene creata l'istanza di wxDManutenzione. Ricorda che il reference va sempre agganciato a una variabile esistente e non può più essere modificato (a differenza di un puntatore).
    Esempio:

    codice:
    Manutenzione man;
    // settaggi vari di man
    wxDManutenzioneImp test(nullptr,man);
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Mi sono perso uin un bicchiere d'acqua.
    Il problema non era nel costruttore ma nel fatto che nel blocco private avedo dichiarato una variabile in questo modo:
    codice:
    Manutenzione &manutenzione
    anziché
    codice:
    Manutenzione *manutenzione

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.