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

    [Pillola]Permettere una sola istanza di una classe in C++

    A volte può essere necessario fare in modo che sia possibile creare una ed una sola istanza di una determinata classe. In questo caso è possibile usare una tecnica chiamata singleton.


    Ecco come risolvere il problema. Si noti l’importanza del costruttore di default privato; è importante che nessun costruttore sia dichiarato pubblico, altrimenti la tecnica non funzionerà.
    codice:
    class Singleton { 
      Singleton() { } // il costruttore è privato! 
    public: 
      static Singleton& Get() { 
        static Singleton s; // dato che è statico verrà creato UNA sola volta 
        return s; 
      } 
    };
    In questo modo si potrà accedere all'istanza della classe attraverso il metodo Singleton::Get().
    Ovviamente occorrerà modificare il listato qua sopra in modo da renderlo adatto alle proprie esigenze, aggiungendo variabili e funzioni membro opportune.


    Aspetto i vostri commenti e le eventuali correzioni



    :sexpulp:
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  2. #2
    :quote:
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  3. #3
    Niente commenti :master: ?
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  4. #4
    Originariamente inviato da McAuriel V
    io uso la direttiva in precompilazione

    #ifndef _CLASSE_A_
    Molto interessante, fammi un esempio di codice:sexpulp:
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  5. #5
    Corretto!
    Potrebbe essere valida una modifica del tipo, imporre un numero massimo di istanze contemporanee. Ad esempio un software che dovesse usare delicate risorse di sistema, potrebbe essere creato in modo da generare un max di 20 istanze (ad esempio connessioni di rete per evitare collasso) e sollevare un'eccezione quando il numero di oggetti richiesto è troppo alto.

    try{
    ClasseX c = ClasseX("connettiti al pc di pippo");
    }
    catch(ErrRisorseFinite)
    {
    cerr << "Il sistema gn'a fa più!" << endl;
    }

  6. #6
    ottima idea!!!

    P.S: ma tu quanti anni hai??????
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  7. #7

  8. #8
    Originariamente inviato da Andrea Simonassi
    28



    Ma che universita hai fatto, se la hai fatta???????????? e come scuola superiore?????
    Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che
    si realizzi
    .
    Os: WinME
    Lang: C++
    Editor: C++ Builder 6 Enterprise

  9. #9
    L'università della vita vale come risposta?

    A parte gli scherzi sono ragioniere, da due anni ho ripreso a studiare (CDL in Informatica), come informatico, invece, sono completamente autodidatta (a parte l'università ovviamente ).

    All'università ti puoi iscrivere anche a 80 anni (lo dice la Costituzione della Repubblica).

    Come mai ti interessano i miei trascorsi? Sei mica del fisco? Non esisteva una legge sulla privacy?

  10. #10
    Uhm, perdonami, ma credo tu abbia usato il termina istanza un po impropriamente. Non ho capito una cosa: per unica istanza vuoi intendere che ogni oggetto istanziato di quella determinata classe si riferirà sempre ad uno stesso oggetto o vuoi dire che con questo metodo è possibile instanziare una sola volta la classe, dopo di che si riceve un errore di compilazione o affini? Te lo chiedo perche' il discorso è un attimino diverso... molto interessante invece la tecnica del lanciare una eccezione in caso di eccedenza di instanziamenti.

    bye
    There are 10 kinds of people in the world: who knows the binary numeration and who not

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.