2013-02-20 6 views
5

Nella nostra applicazione sono presenti classi generali utilizzate (ad esempio una classe che contiene i parametri di configurazione del progetto) come di seguito.Accesso a una classe di uso generale da tutto il progetto

class DB{ 
public: 
int projectVersion 
int somethingSoMuchImportantAllOverTheProject 
}; 
extern DB* pDB; 

Perché tutte le altre classi utilizzeranno questa classe, tutti di loro ha bisogno di accedere in qualche modo. La nostra soluzione sta mettendo "extern DB * pDB;" sotto il suo file di intestazione, quindi chiunque ne abbia bisogno, sarà in grado di accedervi dopo aver incluso l'intestazione. Sto pensando che forse c'è una soluzione migliore e vuoi avere le tue idee per questo caso generale.

+1

Fa _ essere un puntatore? –

+4

Ho rimosso il tag 'c', questo è chiaramente C++. – unwind

+1

Quello di cui stai parlando è una semplice variabile globale (in una forma su un'altra). Quindi, per suggerire un'opzione migliore, è necessario vedere l'intera immagine in quanto è una considerazione del design, non solo la sintassi. – KBart

risposta

1

È un singleton. È possibile trovare molte discussioni su di esso, ma una cosa importante è nascondere il costruttore della classe in modo che gli utenti della classe siano obbligati a utilizzare l'unico oggetto.

+0

Il pattern di Singleton sarà un buon miglioramento ma mi sto anche chiedendo come collegare questo oggetto ad altre classi meglio. –

+0

Non sono sicuro di cosa intendi per "collegamento" ... Suppongo che tu non intenda la parte di collegamento del processo di compilazione. Basta "utilizzarlo" direttamente nel codice, ad es. controlla la versione tramite 'pDB-> projectVersion'. – mark

+0

Ho menzionato questo perché so che Singleton riguarda il rendere l'oggetto singolo, consentendo solo un'istanza di esso. Ma cosa non sono sicuro di mettere il puntatore all'oggetto come "extern DB * pDB;" nell'esempio. –

Problemi correlati