Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
1 | |
Как лучше сделать глобальную переменную?08.01.2017, 09:11. Показов 8833. Ответов 35
Метки нет (Все метки)
Интернет совсем пустой в плане глобальных переменных на с++
Задача следующая: 1. Нужно создать много глобальных переменных будет штук 100 к примеру. Каждую объявлять не интересно. 2. Глобальные переменные должны быть доступны всем файлам спп. 3. Я не хочу объявлять 100 переменных для каждого файла через extern 4. Лучше создать структуру или класс для этого. и объявить класс или структуру для файла спп. 5. Нужно что-нибудь статическое. Сразу создал класс или структуру и тут же прямо в классе объявляешь значение каждой глобальной переменной. 6. Каждая глобальная переменная должна иметь возможность на прямую менять значение. 7. Я не хочу писать много кода. 100 переменных умножать в два раза и потом получить 200 строк кода. Увольте. Дайте простой рецепт.
0
|
08.01.2017, 09:11 | |
Ответы с готовыми решениями:
35
Как сделать одну глобальную переменную Как создать глобальную переменную? Как обьявить глобальную переменную Как создать глобальную переменную? |
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
08.01.2017, 09:17 | 2 |
0
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|||||||||||
08.01.2017, 09:32 [ТС] | 3 | ||||||||||
Конфигурация программы. Это большой проект. Много файлов спп. И каждый решает свою задачу.
Каждому файлу спп нужен доступ к глобальным переменным. Писать к каждому фалу спп объявление 100 строк кода просто ужасно. Проще объявить один класс или структуру для одного файла спп. Знаю что возможно. Но пока не понял как это сделать. Добавлено через 10 минут Вот на ум приходит следующий код:
Проблема в том, что нужно писать два раза переменную. А это лишние хлопоты. Строк в два раза больше получается.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
08.01.2017, 09:39 | 4 | |||||
Решение в лоб:
Это меньшая из проблем. Основная проблема такой архитектуры — сильная связность всех компонентов, которые используют конфигурацию и потенциальное затруднение покрытия тестами. Скорее всего, не всем подсистемам нужны абсолютно все параметры из конфигурации. Возможно, не все параметры конфигурации могут быть определены на этапе компиляции. И вот эту проблему уже нужно решать. А дублирование строк из-за необходимости написания объявления и определения — мелочи.
0
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 09:41 [ТС] | 5 |
Моя среда не понимает оператор: constexpr
Она откуда. из какой библиотеки?
0
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 09:47 [ТС] | 7 |
Как заставить работать этот оператор?
Компилятор его не понимает. Это не известное.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
08.01.2017, 09:49 | 8 |
Закрепленная тема: Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17, C++20, C++23)
1
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 09:52 [ТС] | 9 |
А со структурой код может не требует расширения? Может есть другие альтернативы?
0
|
2778 / 1931 / 570
Регистрация: 05.06.2014
Сообщений: 5,595
|
|
08.01.2017, 09:52 | 10 |
В массив запихните. Возможно, даже, ассоциативный (std::map<std::string,int>).
Этож константа, а просили переменную.
0
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 09:58 [ТС] | 11 |
0
|
2778 / 1931 / 570
Регистрация: 05.06.2014
Сообщений: 5,595
|
||||||
08.01.2017, 10:02 | 12 | |||||
1
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 10:19 [ТС] | 13 |
А со структурой видимо тоже придется две переменные писать?
0
|
2778 / 1931 / 570
Регистрация: 05.06.2014
Сообщений: 5,595
|
||||||
08.01.2017, 10:21 | 14 | |||||
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
08.01.2017, 10:21 | 15 |
Структура отличается от класса только уровнем доступа по умолчанию.
Что хуже. Я в курсе. И поэтому выше написал, что основная проблема здесь — архитектура, а не дублирование кода.
0
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 10:23 [ТС] | 16 |
Еще вопрос, как сделать, чтобы класс был виден другим файлам спп?
0
|
2778 / 1931 / 570
Регистрация: 05.06.2014
Сообщений: 5,595
|
|
08.01.2017, 10:26 | 17 |
Кинуть класс в .h файл, .h заинклудить во все нужные дырки. Но переменные (не статик-члены класса) в .h закинутся либо с глюками, либо с бубном.
0
|
Строитель
459 / 76 / 4
Регистрация: 18.06.2010
Сообщений: 514
|
|
08.01.2017, 10:45 [ТС] | 18 |
Однако проблемы возникли в видимостью классов.
Подключать include в каждом классе не дает. Потому что возникают вторые и третьи объявления переменных. Без подключения includ не видать. Палка о двух концах...
0
|
2778 / 1931 / 570
Регистрация: 05.06.2014
Сообщений: 5,595
|
|
08.01.2017, 10:47 | 19 |
В .h подписать extern в начало объявления переменной, потом повторить ее объявление в каком-то одном .cpp (уже без extern).
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
08.01.2017, 10:54 | 20 |
Отсутствуют include guards?
1
|
08.01.2017, 10:54 | |
Помогаю со студенческими работами здесь
20
Как объявить глобальную переменную в Dev-C++ 4.9.9.2? Как и где описать глобальную переменную? Как обьявить глобальную переменную в функции? Как глобальную переменную засунуть в структуру? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |