Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция с переменным числом параметров 
:(
    Опции темы
azesmcar
Дата 3.6.2011, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ИванМ @  3.6.2011,  21:23 Найти цитируемый пост)
azesmcar, из другого контейнера. 

Ну так не вытаскивай, его же и передавай smile 
PM   Вверх
ИванМ
Дата 3.6.2011, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Тогда надо еще передать порядок чтения этих элементов, и кроме того эти две части не должны друг про друга много знать.
PM MAIL   Вверх
azesmcar
Дата 3.6.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(ИванМ @  3.6.2011,  21:30 Найти цитируемый пост)
Тогда надо еще передать порядок чтения этих элементов, и кроме того эти две части не должны друг про друга много знать. 

Отсортируй как надо перед тем, как передавать в функцию или храни контейнер уже отсортированным.
PM   Вверх
ИванМ
Дата 3.6.2011, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Добавлено @ 21:38
Сортировка тут не причем, так как порядок может быть не поддающийся алгоритму сортировки. Если бы даже можно было нарушать порядок, сортировка заняла бы тоже много времени.

Добавлено @ 21:44
Задача такая.
Есть несколько предикатов, имеющих свою структуру (последовательность лексем или действий) и внутренние переменные. Нужно вызвать из одного предиката другой, передав ему в качестве параметров некоторые свои внутренние переменные.

Это сообщение отредактировал(а) ИванМ - 3.6.2011, 21:48
PM MAIL   Вверх
asmdzen
Дата 3.6.2011, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



ИванМ, но если функция не знает какие именно параметры она принимает, как она с ними будет работать? я понимаю какой-нибудь sprintf(), а как эта будет работать?
PM MAIL   Вверх
ИванМ
Дата 3.6.2011, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



asmdzen, функция знает: у нее первый параметр - число параметров. Не знает компилятор.
PM MAIL   Вверх
asmdzen
Дата 3.6.2011, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



Цитата(ИванМ @  3.6.2011,  21:10 Найти цитируемый пост)
func(size_t n, тип1, значение1, тип2, значени2, ... типn, значениеn), т.к. n неизветсно.


так это получается что-то подобное:
Код

func(size_t n, int x, double y, float z);


только с неопределенным количеством параметров разных типов, откуда функция узнает какой у параметра тип и что с этим параметром делать. я чет не догоняю.

чем va_list не устраивает?


Это сообщение отредактировал(а) asmdzen - 3.6.2011, 22:59
PM MAIL   Вверх
ИванМ
Дата 3.6.2011, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



asmdzen, 
читайте внимательно:
Цитата(ИванМ @  3.6.2011,  21:10 Найти цитируемый пост)
Нужно интерпретированное выражение вида
кол-во
тип1
значение1
тип2
значение2
...
типn
значениеn


Цитата

чем va_list не устраивает?

Вполне устраивает для чтения аргументов, но мне нужно для передачи.
PM MAIL   Вверх
asmdzen
Дата 3.6.2011, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



теперь понял )
не будет ли удобней написать enum со всеми возможными типами и потом уже делать cast?
PM MAIL   Вверх
ИванМ
Дата 3.6.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Цитата(asmdzen @  3.6.2011,  23:27 Найти цитируемый пост)
не будет ли удобней написать enum со всеми возможными типами и потом уже делать cast? 

так в принципе и сделано
PM MAIL   Вверх
asmdzen
Дата 3.6.2011, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



Цитата(asmdzen @  3.6.2011,  22:46 Найти цитируемый пост)
если функция не знает какие именно параметры она принимает, как она с ними будет работать?

я так понимаю это все же конечное количество параметров, просто неизвестно придут они все или только часть (если не так то все еще непонятно как функция разберет что и с каким параметром делать). Вас просто не устраивают дефолтные параметры из-за жора ресурсов?

Это сообщение отредактировал(а) asmdzen - 3.6.2011, 23:35
PM MAIL   Вверх
ИванМ
Дата 4.6.2011, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



asmdzen, нет, смысл в том, что я не знаю сколько параметров нужно передать. Знает только интерпретатор. Он и будет передавать.
Когда интерпретатор будет передавать параметры, он уже будет знать сколько их и поэтому первым параметром передаст число этих параметров. Т.е. функция, когда ее вызовут, будет знать, сколько их пришло. Но кроме функции и интерпретатора больше никто не знает.
PM MAIL   Вверх
asmdzen
Дата 4.6.2011, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 28.11.2010

Репутация: 3
Всего: 5



ИванМ, это я понял, я не догоняю что функция с ними делать будет, не встречал еще такое. Ну есть у меня функция с переменным числом параметров, но нет никакого формата как в printf, есть только типы переменных и их значения, что мне с этими параметрами делать? если бы это была очередь и заранее неизвестно есть там все параметры или нет, то я понимаю, но если неизвестно ни количество параметров ни их порядок?
PM MAIL   Вверх
500mhz
Дата 4.6.2011, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 1
Всего: 14



передавай указатель на структуру заполненую параметрами, где первым к примеру идет кол-во параметров.


--------------------

PM MAIL ICQ   Вверх
ИванМ
Дата 4.6.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Цитата(asmdzen @  4.6.2011,  09:20 Найти цитируемый пост)
 если бы это была очередь и заранее неизвестно есть там все параметры или нет, то я понимаю, но если неизвестно ни количество параметров ни их порядок? 

Почему неизвестно все параметры или нет. Как раз известно. Число параметров передается первым параметром. Сколько сказано, столько и будет. Порядок тоже известен: от первого к последнему.

Цитата(500mhz @  4.6.2011,  09:48 Найти цитируемый пост)
передавай указатель на структуру заполненую параметрами, где первым к примеру идет кол-во параметров. 

Мне нужна именно запись вида:
funt(count, тип, значение, ...)
Это во первых, а вторых любая структура имеет определенный размер, задаваемый при компиляции. А у меня переменный размер.
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0622 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.