Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
AnreyKazakov
Заблокирован
#1

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

07.09.2012, 17:45. Просмотров 1973. Ответов 5
Метки нет (Все метки)

Можно ли как-нибудь обратиться к локальной переменной из другой функции?
Например:
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();
}
Так у меня в программе получилось ... что через параметры функции нельзя, и глобально объявить тоже нельзя...(вернее неохота =) )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2012, 17:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно обратиться к локальной переменной из другой функции? (C++):

Вызов функции внутри другой функции с передачей локальной переменной по ссылке - C++
Столкнулся с очень с интересной проблемой. Можно ли так делать? #include <iostream> using std::cout; void f(const int &ref){...

Получить доступ к локальной переменной другой функции - C++
Что не так?Можно ли тут обойтись без указателя? #include <iostream> using namespace std; int a = 0; void m(void) { extern int b;...

Можно ли обратиться к перекрытой глобальной переменной? - C++
int x; void f(int x); int main() { f(2); return 0; }; void f(int x) { x=x; // здесь я хочу скопировать праметр в...

Как из другой функции обратиться к членам класса окна? - C++
Здравствуйте! Вобщем в VC6 у меня есть класс окна, зовется CMyDlg. Так вот по нажатию на кнопку создается нить (thread) API'шной...

Применение std::move к локальной переменной при возврате из функции - C++
Response HostHandler::notFound() const { Response resp; resp.status = 404; return std::move(resp); } Имеет ли это...

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

5
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
07.09.2012, 18:04 #2
Почему это вдруг через параметр нельзя?
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.09.2012, 18:07 #3
Передавайте через параметр. Если нельзя, то переписывайте мешающий кусок так, чтобы было льзя.

Альтернативный вариант, если очень хочется городить костыли: засунуть функцию в класс, классу при создании передать ссылку/адрес qq, сохранить её в поле класса, после этого из метода PaPoRoTnik() можно достучаться до нужной переменной. Или сделать то же самое замыканиями C++11.
1
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~ Посмотреть сообщение
засунуть функцию в класс
Блин, придется наверно так делать, это с моим опытом еще на полтора дня =))) , да шучу на день =)
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 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)
{
  // ...
}
тогда она сможет их поменять напрямую.
1
AnreyKazakov
Заблокирован
07.09.2012, 18:41  [ТС] #6
Точно же, щас попробую последний вариант =)

Добавлено через 6 минут
Класс, все работает на ура
0
07.09.2012, 18:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.09.2012, 18:41
Привет! Вот еще темы с ответами:

Использование переменной, определенной в 1 функции, в другой. - C++
Всем привет! Прошу помощи: есть 2 функции: void 1{...} и void 2{...}. Ну и main(). В 1 функции определена некая переменная, которая...

можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это реализовать? - C++
можно ли в с++ вызвать переменную из одной функции в другую т.е. мы переменну задали в одной функции а использовали в другой... и как это...

Можно ли передать указатель на функцию как параметр другой функции? - C++
В общем, вопрос. Можно ли, допустим ... int fun1(int x) { ... ... ... return x*1000; }

Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде локальной переменной внутри функции. - C++
Совсем не понял эту тему. Нужно создать базу данных (создать пустой бинарный файл). Через поток. Поток бинарного файла описать в виде...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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