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

Можно обратиться к локальной переменной из другой функции? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
AnreyKazakov
Заблокирован
07.09.2012, 17:45     Можно обратиться к локальной переменной из другой функции? #1
Можно ли как-нибудь обратиться к локальной переменной из другой функции?
Например:
C++
1
2
3
4
5
6
7
8
9
int PaPoRoTnik(){
extern int qq;
int qq2=124;
qq=qq2; // Вот здесь, можно как-нибудь значение передать????
}
main(){
int qq=123;
PaPoRoTnik();
}
Так у меня в программе получилось ... что через параметры функции нельзя, и глобально объявить тоже нельзя...(вернее неохота =) )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2012, 17:45     Можно обратиться к локальной переменной из другой функции?
Посмотрите здесь:

C++ можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать?
C++ Использование переменной, определенной в 1 функции, в другой.
C++ Как из другой функции обратиться к членам класса окна?
вызов переменной из другой функции C++
Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
07.09.2012, 18:04     Можно обратиться к локальной переменной из другой функции? #2
Почему это вдруг через параметр нельзя?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.09.2012, 18:07     Можно обратиться к локальной переменной из другой функции? #3
Передавайте через параметр. Если нельзя, то переписывайте мешающий кусок так, чтобы было льзя.

Альтернативный вариант, если очень хочется городить костыли: засунуть функцию в класс, классу при создании передать ссылку/адрес qq, сохранить её в поле класса, после этого из метода PaPoRoTnik() можно достучаться до нужной переменной. Или сделать то же самое замыканиями C++11.
AnreyKazakov
Заблокирован
07.09.2012, 18:17  [ТС]     Можно обратиться к локальной переменной из другой функции? #4
там у меня циклы i j k идут как параметры функции PaPoRoTnik(), потом i j k обрабатываются и обратно их надо вернуть в main(), а в функцию, если обратно передавать, только одно значение влазит, можно наверно (я не знаю можно или нет) функцию типа string объявить (std::string PaPoRoTnik()) и передавать параметры как-то так...
C++
1
2
res_fun=StrToInt(i)+StrToInt(j)+StrToInt(k);
return  res_fun;
а потом разбирать их, но это же извращение ИХМО...

Добавлено через 3 минуты
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
засунуть функцию в класс
Блин, придется наверно так делать, это с моим опытом еще на полтора дня =))) , да шучу на день =)
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.09.2012, 18:18     Можно обратиться к локальной переменной из другой функции? #5
Господи, ну сделайте себе
C++
1
2
3
4
5
6
7
8
9
template <class T1, class T2, class T3>
struct Triple {
  const T1 first;
  const T2 second;
  const T3 third;
  
  Triple(const T1 &one, const T2 &two, const T3 &three)
    : first(one), second(two), third(three) {}
};
И передавайте такой объект, который захватит с собой три ваших инта:
C++
1
2
3
4
5
Triple<int, int, int> func(int i, int j, int k)
{
  // ...
  return Triple(i, j, k);
}
Или уже готовый std::tuple, если C++11 есть.

А ещё лучше: передайте i, j, k по ссылке в функцию:
C++
1
2
3
4
void func(int &i, int &j, int &k)
{
  // ...
}
тогда она сможет их поменять напрямую.
AnreyKazakov
Заблокирован
07.09.2012, 18:41  [ТС]     Можно обратиться к локальной переменной из другой функции? #6
Точно же, щас попробую последний вариант =)

Добавлено через 6 минут
Класс, все работает на ура
Yandex
Объявления
07.09.2012, 18:41     Можно обратиться к локальной переменной из другой функции?
Ответ Создать тему
Опции темы

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