Объявление awesome
в main() делает его областью действия к функции main() и, следовательно, видимо только с помощью функции main() или функций, которые вы явно передаете в main().
Простой способ добиться того, что вы хотите использовать «внешнюю переменную»: Поместите определение и объявление за пределами main()
в основной исполняемый файл:
main.cpp:
QtAwesome * awesome = new QtAwesome(&app);
int main(int argc, char *argv[]) {
awesome->do_something();
// ...
}
Вышеупомянутое называется определяющим объявлением «awesome». В других файлах, которые вы хотите использовать в удивительном, используйте спецификатор extern
хранения:
somerandommodule.cpp:
extern QtAwesome * awesome;
void some_function() {
awesome->do_something();
}
Очень важно, что у вас есть ровно один «определяющая декларация». Компонент сделает все extern
удивительные объявления указывают на это определение.
Если вы один письменном класс QtAwesome, еще один способ сделать это держит единственный экземпляр в классе QtAwesome. Это примерно «одноэлементный рисунок». Это просто делает его легче сказать, где и когда инициализация происходит:
qtawesome.h:
class Awesome {
private:
static Awesome * singleton;
public:
static Awesome * getInstance() {
if(!Awesome::singleton)
Awesome::singleton = new Awesome();
return Awesome::singleton;
};
};
qtawesome.cpp:
#include "awesome.h"
Awesome* Awesome::singleton = 0;
somerandommodule.cpp:
#include "awesome.h"
void some_function() {
Awesome::getInstance()->do_something();
}