2013-02-20 3 views
5

В нашем приложении есть общие используемые классы (например, класс, который содержит параметры конфигурации проекта), как показано ниже.Доступ к общему классу использования по всему проекту

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

Поскольку все остальные классы будут использовать этот класс, все они должны каким-либо образом получить к нему доступ. Наше решение ставит «extern DB * pDB»; под его заголовочным файлом, чтобы любой, кто в ней нуждается, сможет получить к нему доступ после включения заголовка. Я думаю, может быть, есть лучшее решение и вы хотите получить свои идеи в этом общем случае.

+1

Это _have_, чтобы быть указателем? –

+4

Я удалил тег 'c', это, очевидно, C++. – unwind

+1

То, о чем вы говорите, это простая глобальная переменная (в одной форме на другой). Итак, чтобы предложить лучший вариант, нужно увидеть всю картину, поскольку это соображение дизайна, а не просто синтаксис. – KBart

ответ

1

Это одноэлементный. Вы можете найти много дискуссий по этому вопросу, но одна важная вещь - скрыть конструктор класса, чтобы пользователи класса были вынуждены использовать один объект.

+0

Шаблон Singleton будет хорошим улучшением, но я также спрашиваю, как лучше связывать этот объект с другими классами. –

+0

Я не уверен, что вы подразумеваете под «ссылкой» ... Я предполагаю, что вы не имеете в виду ссылку на часть процесса сборки. Просто «используйте» его непосредственно в своем коде, например. проверьте версию через 'pDB-> projectVersion'. – mark

+0

Я упомянул об этом, потому что я знаю, что синглтон - это сделать объект единым с помощью только одного экземпляра. Но то, что я не уверен, помещает указатель объекта в заголовок как «extern DB * pDB;» в примере. –

Смежные вопросы