Форум программистов, компьютерный форум CyberForum.ru

Определение глобальных переменных - C++

Восстановить пароль Регистрация
 
Canxes
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 4
18.03.2016, 17:21     Определение глобальных переменных #1
Доброго времени суток!
Интересует следующий вопрос - Возможно ли определение глобальных переменных в теле подпрограмм или классов?

Гугл, к сожалению, не помог. Единственное, что я нашел - класс памяти extern. Якобы он делает объявленную переменную глобальной. Но в моем коде(ниже) переменная condition не видна во второй функцие work_with_base(). Либо я делаю что-то не так, либо это действительно невозможно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Инициализация глобальной переменной состояний
void init()
{
    extern enum cond { login = 0, menu, selection, add_pers, del_pers, out};
    extern cond condition;
    condition = login;
}
//Передача управления ф-иям в зависимости от текущего значения переменной состояний
void work_with_base()
{
    while (true)
    {
        try
        {
            switch (condition)  
            {
            case login:
            /////////////////
        }   
    }
}
P.S. Собственно, данная переменная нужна для правильной передачи управления между частями программы. Авторизация, работа с базой, добавление пользователей... Есть ли иной, более изящный способ осуществлять передачу управления? Этот тоже неплох, на мой взгляд, но для общего развития хотелось бы узнать.
P.P.S. В принципе, вопрос касается скорее объявления глобальной переменной. Прошу прощения за мою терминалогию

Заранее спасибо за помощь)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
McFair
7 / 7 / 4
Регистрация: 25.01.2016
Сообщений: 32
18.03.2016, 17:46     Определение глобальных переменных #2
extern это совсем другое, оно всего лишь показывает компилятору что где то в другом месте объявлены глобальные переменные, и заново их не нужно создавать, например если в двух разных файлах части программы и в одном как раз определены глобальные переменные, то пишешь уже так extern int x, y;
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2134 / 967 / 223
Регистрация: 30.11.2013
Сообщений: 3,235
18.03.2016, 17:50     Определение глобальных переменных #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Canxes, почитайте про Singleton
nd2
1032 / 771 / 260
Регистрация: 29.01.2016
Сообщений: 2,413
18.03.2016, 18:28     Определение глобальных переменных #4
Определение переменных в заголовочных файлах
jdzvk
18.03.2016, 20:55     Определение глобальных переменных
  #5

Не по теме:

почитал о Singleton. читал недолго, лишь часок.
интересная фишка, этот ваш Синглетон.
относится к так называемым "Порождающим шаблонам", что не точно отражает смысл,
и может иметь различный функционал.
в случае неправильного использования, возможны всяческие неудобства.
----
вычитал: Синглетон нужен для таких вещей как
"недавать различным приложениям одновременно пытаться крутить рукоятку громкости"
к примеру: зазвонил будильник, но плеер, "услышав" из микрофона, что музыка слишком громко,
пытается крутить ручку взад.
Синглетон объявляется, и "говорит" плееру: я Синглетон, оставь ручку в покое до nn:nn:nn(зачёркнуто)
на nn:nn:nn, и исчезает. если у плеера нет коллизии(он не синглетон), плеер расслабляется на указанное время, продолжая играть.
умеет ли Синглетон порождать дубликат себя, чтобы "держать" ручку громкости, не вычитал.
*по идее, Синглетону бы надо это уметь.
"я создал дубликат себя, он держит рукоятку плеера, и могу заниматься прочим, но через nn загляну и дезавуирую дубликат.
а если плеер "переедет"(на второе ядро, к примеру), найду его.
--
то есть программы должны либо понимать, что у них может быть Синглетон,
либо на них должна иметься "курочка карате", которая тоже как бы синглетон.
*Синглетон должен иметь возможность либо "держать ручку", либо отнять её.
*найдёт плеер ручку, когда ему её "отдадут", или не найдёт - забота плеера.
--
поскольку возможное количество одновременно существующих единиц подобного функционала ограничено,
иногда Синглетон следит, чтобы не появлялось подобий себя. не потому, что его взаимодействие с программой
может быть нарушено, а чтобы другие программы не подумали, что что то, крутившее рукоятку плеера, Синглетон.
*а не зловред, к примеру. и кривых реализаций такого функционала - полно.

Yandex
Объявления
18.03.2016, 20:55     Определение глобальных переменных
Ответ Создать тему
Опции темы

Текущее время: 05:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru