Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать глобальную переменную между всем фаилами (cpp, h) с++

Milena Meyer Гуру (3425), закрыт 8 лет назад
Есть класс Dictionary с include классом Word
Есть класс Word с include классом Character
и того 3 класса + main
Все разбито на .cpp и .h

Где и как можно сделать глобальную переменную, которую я могла бы использовать во всех трех классах? :) так как она будет использоваться сотни тусяч раз, нужна именно глобальная на весь проект, а не вызывать ее через геттеры, или менять через сеттер.
Лучший ответ
Капитан Гугл Искусственный Интеллект (146245) 8 лет назад
C-way: в .h-файле пишешь
extern int x; //это означает "где-то есть переменная x
в одном из cpp-файлов пишешь
int x;//конкретное объявление
Все файлы, включающие h, будут иметь доступ к этой переменной.
Cpp-way: в одном из классов делаешь
class X{
public:
static int x;
}
И в .cpp-файле
int X::x;//конкретное объявление
Переменная X::x будет доступна отовсюду, где доступен класс.

Но лучше все-таки геттерами-сеттерами, на всякий случай.

И не перепутай - static с глобальной переменной вне класса означает, наоборот, ЗАПРЕТ на доступ к ней извне файла.
Milena MeyerГуру (3425) 8 лет назад
ну я просто в хедере над классом написала статик, чтобы не обьявлять его снова в cpp. ибо как уже и говорила, там класс буквы создается по 100 000 раз и улетает в мусорку)))
Капитан Гугл Искусственный Интеллект (146245) Тогда это будет отдельная переменная в каждом классе, который использует хедер.
Остальные ответы
Максим Искусственный Интеллект (215880) 8 лет назад
Сделай public static переменную.
Milena MeyerГуру (3425) 8 лет назад
ну вот к примеру пишу public static bool alreadySorted = false; в классе Character, т. к. к буква есть доступ из слова, а из библиотеки к слову.

мне выдает - expected declaration;
Максим Искусственный Интеллект (215880) Не понял? Надо библиотеку подключать что ли? Это обязательно?
Похожие вопросы