2013-02-20 6 views
5

W naszej aplikacji znajdują się ogólne używane klasy (np. Klasa przechowująca parametry konfiguracyjne projektu), jak poniżej.Dostęp do ogólnej klasy użytkowej z całego projektu

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

Ponieważ wszystkie pozostałe klasy będą korzystać z tej klasy, wszystkie muszą w jakiś sposób uzyskać do niej dostęp. Nasze rozwiązanie polega na umieszczeniu "zewnętrznego DB * pDB;" pod swoim plikiem nagłówkowym, więc ktokolwiek go potrzebuje, będzie mógł uzyskać do niego dostęp po uwzględnieniu nagłówka. Myślę, że być może istnieje lepsze rozwiązanie i chcesz uzyskać pomysły na ten ogólny przypadek.

+1

Czy to ma być wskaźnik? –

+4

Usunąłem znacznik "c", jest to wyraźnie C++. – unwind

+1

To, o czym mówisz, jest prostą zmienną globalną (w jednej formie na drugiej). Tak więc, aby zaproponować lepszą opcję, trzeba zobaczyć cały obraz, ponieważ jest to kwestia projektu, a nie tylko składni. – KBart

Odpowiedz

1

To singleton. Możesz znaleźć wiele dyskusji na ten temat, ale ważne jest, aby ukryć konstruktor klasy, aby użytkownicy klasy byli zmuszeni używać jednego obiektu.

+0

Wzorzec Singleton będzie dobrym ulepszeniem, ale ja też pytam również o to, jak lepiej powiązać ten obiekt z innymi klasami. –

+0

Nie jestem pewien, co masz na myśli przez "link" to ... Zakładam, że nie masz na myśli części link procesu budowania. Po prostu "użyj" go bezpośrednio w swoim kodzie, np. sprawdź wersję za pomocą 'pDB-> projectVersion'. – mark

+0

Wspomniałem o tym, ponieważ wiem, że singleton polega na uczynieniu obiektu pojedynczym tylko poprzez umożliwienie jednej jego instancji. Ale nie jestem pewien, jak umieścić wskaźnik obiektu w nagłówku, tak jak "extern DB * pDB;" w przykładzie. –

Powiązane problemy