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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Canxes
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 6
#1

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

18.03.2016, 17:21. Просмотров 196. Ответов 4
Метки нет (Все метки)

Доброго времени суток!
Интересует следующий вопрос - Возможно ли определение глобальных переменных в теле подпрограмм или классов?

Гугл, к сожалению, не помог. Единственное, что я нашел - класс памяти 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2016, 17:21     Определение глобальных переменных
Посмотрите здесь:

Инициализация глобальных переменных - C++
Требуется инициализировать 2 массива и 2 переменные, которые используются в 2-х функциях, с клавиатуры, но без передачи их в качестве...

Объявление глобальных переменных - C++
#include "stdafx.h" #include <conio.h> #include <stdio.h> void main (int x, int y) { printf ("x="); scanf_s ("x=&d",...

поиск глобальных переменных с++ - C++
Есть задачка, которую не могу решить. Дано 9000 .cpp файлов, которые являют собой полноценные программы со своими мейнами. Нужно найти для...

Описание глобальных переменных - C++
помогите, плиз, с такой незадачей.. в каком из файлов нужно обозначить глобальные переменные, чтоб код нормально читался. вот что у меня...

Использование глобальных переменных - моветон ли? - C++
Ребят, очень часто вижу как отцы С++, когда проверяют чей-то код и обнаруживают там глобальные переменные, заявляют, что это не хорошо, что...

Ошибка в сравнении глобальных переменных в функциях - C++
Здравствуйте! Я всю жизнь писал на Pascal и с С столкнулся впервые пару дней назад, когда начал эксперементировать с Arduino. Поискал...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
McFair
7 / 7 / 4
Регистрация: 25.01.2016
Сообщений: 36
18.03.2016, 17:46     Определение глобальных переменных #2
extern это совсем другое, оно всего лишь показывает компилятору что где то в другом месте объявлены глобальные переменные, и заново их не нужно создавать, например если в двух разных файлах части программы и в одном как раз определены глобальные переменные, то пишешь уже так extern int x, y;
rikimaru2013
C++ Game Dev
2419 / 1113 / 240
Регистрация: 30.11.2013
Сообщений: 3,661
18.03.2016, 17:50     Определение глобальных переменных #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Canxes, почитайте про Singleton
nd2
2130 / 1702 / 601
Регистрация: 29.01.2016
Сообщений: 5,485
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     Определение глобальных переменных
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru