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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2009, 16:32   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию Можно ли объявлять функцию в функции? Как в делфи...

Т.е. у меня в функции есть структура. И мне нужна функция от этой структуры. А так как за пределами нет такой структуры, то не получается реализовать...
TwiX вне форума Ответить с цитированием
Старый 28.10.2009, 16:45   #2
mYziK
Пользователь
 
Регистрация: 18.09.2009
Сообщений: 38
По умолчанию

Функция от структуры? Всмысле функция будет использовать значения полей структуры? Тогда параметром передавать )
mYziK вне форума Ответить с цитированием
Старый 28.10.2009, 20:25   #3
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Мне надо функция, которая получает структуру, работает с ней, выдаётся структуру. А структура есть только в одной функции. Я пытался сделать что-то подобное (так в делфи бы работало =)):

Код:
void exe8(char* path)
{
	struct point
	{
		int rad;
		int x;
		int y;
	};

           int getDist(point a, point b)
           {
 	return a.x+b.y;
           }

           point tst;
           tst.x=10;
           int a=getDist(a, a);
}
Но он ругается, мол так нельзя

А если писать так, то он не видит структуру:

Код:
int getDist(point a, point b)
{
	return a.x+b.y;
}
void exe8(char* path)
{
	struct point
	{
		int rad;
		int x;
		int y;
	};
           ...
}
TwiX вне форума Ответить с цитированием
Старый 28.10.2009, 20:52   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Действительно, в C/C++ нельзя объявлять функцию в функции, чтобы использовать структуру point в другой ф-ции нужно вынести её из exe8. Если уж эта структура используется только в этой функции, то в принципе можно выйти из положения объявив статическую функцию в структуре, но это не самый лучший стиль )
Код:
void exe8(char* path)
{
	struct point {
		int rad;
		int x, y;
		
		static int getDist(point a, point b)
		{
			return a.x + b.x;
		}
	};



	point tst;

	tst.x = 10;

	int a = point::getDist(tst, tst);
}

Последний раз редактировалось netrino; 28.10.2009 в 21:01.
netrino вне форума Ответить с цитированием
Старый 28.10.2009, 22:12   #5
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Спасибо)
А почему не самый лучший?
Вроде красиво и цивильно =) Почти как класс =)
А можно как-нибудь вместо point::getDist писать просто getDist. В делфи было бы так
Код:
with point do
{
}
TwiX вне форума Ответить с цитированием
Старый 28.10.2009, 22:54   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
А можно как-нибудь вместо point::getDist писать просто getDist. В делфи было бы так
Код:
with point do
{
}
Увы, нельзя )
В принципе всяко можно поизвращаться(см. код 1) ) Но стоит ли это того? Обычно есть возможность обойтись без подобных махинаций.
Код:
// Код 1
void exe8(char* path)
{
	struct point {
		int rad;
		int x, y;
	};

	class {
	public:
		int operator() (point a, point b) 
		{
			return a.x + b.x;
		}
	} getDist;

	point tst;

	tst.x = 10;

	int a = getDist(tst, tst);
}
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как объявлять строки? TwiX Общие вопросы C/C++ 18 18.09.2009 16:07
Как объявлять (или описывать) метод locate? Andr_zdes Помощь студентам 6 21.05.2009 14:22
Как сделать чтобы двумерный массив который создается в функции можно было использовать в других функциях Olya90 Помощь студентам 4 20.04.2009 18:39
Как передать значение переменной из функции в ACCESSе в функцию в EXCELе? musicitsme Microsoft Office Access 1 01.04.2009 10:24
А можно как нибудь задействовать JAVA SCRIPT в делфи eldar Работа с сетью в Delphi 0 05.09.2008 20:57