![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Igor_K |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
Всем привет!
Только сильно не бейте Мне нужно както объявить глобальные переменные для функций. На пхп я бы сделал так:
в функции myfunct я создаю переменную $my_var. Потом вызываю функцию funct(). В функции funct() переменная $my_var обявлена как глобальная (global $my_var;) и к ней есть доступ. Так от вопрос как такое можно сделать в С++ ? То есть я в функции main() объявляю некоторые переменные, потом вызываю какуюту функцию и в ней имею доступ к переменным созданным в main(). Такое возможно в С++ ? Помогите пожалуйста разобраться с этим Спасибо за помощь! |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
но глобальные переменные это не есть гуд. |
|||
|
||||
| xvr |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
- Попробуй сынок малинки. - У! Вкусно, как Орбит малина! main.h
main.cpp
?.*
|
||||||||||||
|
|||||||||||||
| Igor_K |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
Такой подход я знаю. Но мне он не подходит. Мне именно нужно создать определенные переменные в одной функции и потом их юзать в других. |
||||
|
|||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
Добавлено @ 14:44
так нельзя можно создать функцию возвращающую значение которое можно присвоить глобальной переменной. Это сообщение отредактировал(а) mrbrooks - 4.5.2008, 14:47 |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
Переменные, определённые внутри функции видны только в этой функции (это правило распростряняется на любой блок видимости (scope)). Выход - использовать более правильные методы (singletone etc) или отказаться от C++ |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Можно реализовать функциональность таких переменных, но синтаксически это будут не совсем переменные. |
||||||
|
|||||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Например так :
основной недостаток вышеприведенного примера это использование строк как имен переменных - не будет контроля со стороны компилятора для повышения производительности лучше использовать как в функции f2() строковые имена "видны" только в пределах специализации шаблона для каждого типа, то есть для разных типов одно и то же имя обозначает разные переменные. вышеприведенное только набросок -до ума доводите сами )) Желаю успехов )) Это сообщение отредактировал(а) mes - 5.5.2008, 00:48 |
||||||
|
|||||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
имхо, если 2 функции так сильно связанны друг с другом, что используют одинаковые "глобальные" переменные, то они должны быть в одном классе (переменные-члены которого и будут являться "глобальными" для этих двух функций)
а вообще нужно смотреть по ситуации и насчет динамических переменных способ, предложенный mes'ом, конечно, выход из затруднения, но в с++ таким злоупотреблять не стоит Это сообщение отредактировал(а) Alek86 - 5.5.2008, 09:35 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если ты знаешь какие переменные будут использованы в функции то зачем тебе создавать их динамически?? на php каждый модуль самостоятельный и использует виртуальное (предоставляемое интерпретатором программе в рантайме) глобальное простансво для обмена данных и как следствие этого динамические глобальные переменные . На С++ есть линкер который собирает программу до ее запуска и проверяет и отводит в программе место для глобальных перемменных и как результат отсутсвие "реальных" динамических перемеенных. ИМХО: Я вижу это различие, как преимущество С++ потому, что он предупредит о всех колизиях переменных, когда как в пхп это ложится на программиста. Исходя из вышеперечисленного я не могу представить, когда нужны ()действительно полезны) динамические переменные в С++, - поэтому был бы рад если бы кто нибудь мне привел такой пример (в одной теме я уже пытался выяснить, но так и не добился) Это сообщение отредактировал(а) mes - 5.5.2008, 20:01 |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
смотря что именно ту понимаешь под "динамическими" есть такой тип - boost::any - можешь поискать примеры его использования в самом бусте (я видел в program_options) или по форумам |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
В данном случае слово "динамическое" не подходит. Имелось ввиду это :
Сам бы хотел понять что именно хотят получить этим (потому что уже не первый раз спрашивают) )) Какой смысл декларировать переменные для одних функций в какой то другой функции ?? Не.. это совсем не то..)) вопрос ставиться не о типе, а о самой переменной |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
думаю просто люди привыкли писать в интерпретируемом, где свободы намного больше потому и удивляются, как в С++ "неудобно" |
|||
|
||||
| Igor_K |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 166 Регистрация: 4.2.2008 Где: Kyiv Репутация: нет Всего: нет |
Ну я просто привык в пхп так делать. В пхп если програмить процедурно то имхо без глобальных переменных не обойтись. И в с++ я тоже хочю так сделать, потомучто по другому не мыслю как делать. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |