Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [C++] enum visibile dappertutto

    codice:
    class Semaforo {
    private:
    enum colore {Rosso, Giallo, Verde};
    colore c;
    public:
    Semaforo (colore col) {
    c=col;
    }
    }
    Il problema è che in un'altra classe o nel main non posso fare
    codice:
    Semaforo(Rosso);
    perchè il compilatore non vede chi è Rosso.
    Come posso rendere visibile l'enum in tutte le mie classi e nel main?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    codice:
    class Semaforo 
    {
    	public:
    		enum colore {Rosso, Giallo, Verde};
    		Semaforo (colore col) 
    		{
    			c = col;
    		}
    
    	private:
    		colore c;
    };
    codice:
    Semaforo sem(Semaforo::Rosso);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Esattamente quello che cercavo, grazie!
    Un dettaglio: se volessi mantenere la tradizione di mettere prima i campi privati e poi quelli pubblici come potrei fare?

  4. #4
    Originariamente inviato da starcraftworld
    Esattamente quello che cercavo, grazie!
    Un dettaglio: se volessi mantenere la tradizione di mettere prima i campi privati e poi quelli pubblici come potrei fare?
    Visto che l'enum serve anche per il campo privato, deve essere dichiarata prima di esso. Al più puoi mettere prima l'enum e gli altri tipi da rendere pubblici, poi i campi privati, poi tutto quello il resto che deve essere pubblico:
    codice:
    class Semaforo 
    {
    	public:
    		enum colore {Rosso, Giallo, Verde};
    	private:
    		colore c;
    
    	public:
    		Semaforo (colore col) 
    		{
    			c = col;
    		}
    };
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da starcraftworld
    ... la tradizione ...
    Non tutte le tradizioni sono da seguire sempre ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Originariamente inviato da starcraftworld
    Un dettaglio: se volessi mantenere la tradizione di mettere prima i campi privati e poi quelli pubblici come potrei fare?
    mai sentita come tradizione. Al limite in certi casi puo' essere una praticità per evitare forward declaration.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da MacApp
    mai sentita come tradizione.
    Era una "sua" tradizione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Originariamente inviato da oregon
    Era una "sua" tradizione ...
    Oddio, in realtà quasi sempre faccio anch'io così, e in generale è uno stile che si vede molto... Ma molti dicono di fare il contrario, cioè prima l'interfaccia pubblica, in modo che l'utilizzatore la veda "a colpo", poi i dettagli implementativi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Quindi se voglio creare un metodo (in un'altra classe) che riceve un parametro di tipo colore devo fare:
    codice:
    int metodo (Semaforo::colore col)
    ?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da starcraftworld
    Quindi se voglio creare un metodo (in un'altra classe) che riceve un parametro di tipo colore devo fare:
    codice:
    int metodo (Semaforo::colore col)
    ?
    Hai provato?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.