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

Другие вопросы по тегам