Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2010, 21:39   #1
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию C++.функция.

Всем доброго вечера,нужно разъяснить одну вещь.

есть некий текст программы содержащий класс,в нем вызывается подобная функция:
Код:
float EnterV1()
{
   float r0,fi0;
   do
   {
	   cout<<"Enter value R,Fi of Point"<<endl;
	   cin>>r0;cin>>fi0;
	   if (r0<0 || fi0<0 || fi0>360)
	   {
		cout<<"Entered invalid value"<<endl;
		getch();
		system("cls");
	   }
   }
   while(r0<0 || fi0<0 || fi0>360);
   return r0,fi0;
}
в последствии(сразу же после вызова этой функции) хочу эти r0,fi0 использовать к классу CPoint p1=CPoint(r0,fi0),но не могу разобраться как сделать,ибо после выполнения функции значения из ф-ии не возвращаются,а просто исчезают,по скольку вышли из зоны видимости,и как вытащить их я не могу понять.
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 05.07.2010, 21:54   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
return r0,fi0;
в C++ функции не могут возвращать множество значений. Функция вернёт только fi0. Могу посоветовать возвращать сразу CPoint
Код:
CPoint EnterV1()
{
    ...
    return CPoint (r0, fi0);
}
netrino вне форума Ответить с цитированием
Старый 05.07.2010, 22:01   #3
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

хм,ну тогда мне придется делать таким образом

Код:
CPoint EnterV1()
{
  .....
 CPoint p1=CPoint(r0,fi0);
  return p1;
}
но в этом случае у меня выскакивает деструктор,причем он вызывается дважды когда return p1; и когда закрывающие фигурные скобки.(})
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 05.07.2010, 22:06   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от savva Посмотреть сообщение
хм,ну тогда мне придется делать таким образом

Код:
CPoint EnterV1()
{
  .....
 CPoint p1=CPoint(r0,fi0);
  return p1;
}
но в этом случае у меня выскакивает деструктор,причем он вызывается дважды когда return p1; и когда закрывающие фигурные скобки.(})
Не обязательно так, можно как я написал. Ну, выскакивает и ничего страшного )
netrino вне форума Ответить с цитированием
Старый 05.07.2010, 22:15   #5
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

у меня деструктор уничтожает эту точку класс CPoint в конце функции,отчетливо видно по отладчику,что после выполнения функции p1 не существует,и в последствии методы класса к p1 не вызвать.
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 05.07.2010, 22:15   #6
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

у меня деструктор уничтожает эту точку класса CPoint в конце функции,отчетливо видно по отладчику,что после выполнения функции p1 не существует,и в последствии методы класса к p1 не вызвать.
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Старый 05.07.2010, 22:20   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Естественно, это же локальная переменная, её только внутри функции использовать можно.
Код:
CPoint pt = EnterV1();
и использовать тогда уже pt
netrino вне форума Ответить с цитированием
Старый 05.07.2010, 22:22   #8
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

ну функция скопирует CPoint во внешний вызов, а потом удалит свое пространство, все верно
тут главное, чтобы во внешнем вызове было присвоение к переменной типа CPoint вашей функции с возвращаемым типом CPoint
capta1n вне форума Ответить с цитированием
Старый 05.07.2010, 22:28   #9
savva
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 225
По умолчанию

Все спасибо вам обоим."+" в карму.
За помощь: Нажмите на весы слева от сообщения!
savva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция golf Помощь студентам 4 14.11.2009 16:27
Функция asd48 Помощь студентам 2 21.12.2008 17:17
Функция ZiLi Microsoft Office Excel 1 05.09.2008 18:37
функция Janette Помощь студентам 1 29.04.2008 20:10
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50