2013-02-20 5 views
5

In unserer Anwendung gibt es allgemein verwendete Klassen (z. B. eine Klasse, die Projektkonfigurationsparameter enthält) wie unten.Zugriff auf eine allgemeine Anwendungsklasse aus dem gesamten Projekt

Da alle anderen Klassen diese Klasse verwenden, müssen alle irgendwie darauf zugreifen. Unsere Lösung setzt "extern DB * pDB;" unter seiner Header-Datei, so dass derjenige, der es braucht, in der Lage sein wird, nach dem Einschließen der Überschrift darauf zuzugreifen. Ich denke vielleicht gibt es eine bessere Lösung und möchte Ihre Ideen für diesen allgemeinen Fall bekommen.

+1

Soll _have_ ein Zeiger sein? –

+4

Ich habe das 'c'-Tag entfernt, das ist eindeutig C++. – unwind

+1

Worüber Sie sprechen, ist eine einfache globale Variable (in einer Form auf einer anderen). Um also eine bessere Option vorzuschlagen, müssen Sie das ganze Bild sehen, denn es ist eine Designüberlegung, nicht nur eine Syntax. – KBart

Antwort

1

Es ist ein Singleton. Sie können viele Diskussionen darüber finden, aber eine wichtige Sache ist, verstecken Sie den Konstruktor der Klasse, so dass Benutzer der Klasse gezwungen sind, das eine Objekt zu verwenden.

+0

Singleton Muster wird eine gute Verbesserung sein, aber ich frage auch darüber, wie dieses Objekt mit anderen Klassen besser verknüpfen. –

+0

Ich bin mir nicht sicher, was du mit "link" it meinst ... Ich nehme an, du meinst nicht den Link-Teil des Build-Prozesses. Verwenden Sie es direkt in Ihrem Code, z. Überprüfen Sie die Version über 'pDB-> projectVersion'. – mark

+0

Ich erwähnte dies, weil ich weiß, dass Singleton dazu dient, das Objekt einfach zu machen, indem nur eine Instanz davon zugelassen wird. Aber was ich bin nicht sicher, Objektzeiger auf Header wie "extern DB * pDB;" im Beispiel. –

Verwandte Themen