C++: объявить глобальный класс и получить к нему доступ из других классов?
У меня есть класс, который должен быть объявлен глобально из main() и доступен из других объявленных классов в программе, как мне это сделать?
class A{
int i;
int value(){ return i;}
};
class B{
global A a; //or extern??
int calc(){
return a.value()+10;
}
}
main(){
global A a;
B b;
cout<<b.calc();
}
2 ответа
Решение
Вы, вероятно, действительно не хотите этого делать, но если нужно - в файле, который содержит main:
#include "A.h"
A a;
int main() {
...
}
а затем в файлах, которые нужны для доступа к глобальной:
#include "A.h"
extern A a;
Вам нужно будет поместить объявление A в заголовочный файл Ah, чтобы это работало.
В C++ объявление глобального экземпляра класса - нет-нет.
Вместо этого вы должны использовать шаблон синглтона, который дает вам один экземпляр вашего объекта, доступный из всего приложения.
Вы можете найти много литературы по одноэлементной реализации C++, но википедия - хорошее место для начала.
Потокобезопасная реализация шаблона синглтона уже обсуждалась на stackru