Название: функция с неопределенным числом параметров Отправлено: virtual_root от Май 14, 2013, 15:05 Добрый день. Подскажите, пожалуйста, как мне написать функцию, чтобы она могла принимать неопределенное число аргументов типа QVariant ?
Я пыталась так сделать: Код: void Application::print(QVariant arg1,...){ Код: ошибка: could not convert '* n' from 'QVariant' to 'bool' Подскажите, кто с подобным сталкивался. Название: Re: функция с неопределенным числом параметров Отправлено: mutineer от Май 14, 2013, 15:14 может проще будет отдавать в функцию QVariantList?
Название: Re: функция с неопределенным числом параметров Отправлено: m_ax от Май 14, 2013, 15:21 Ещё можно через variabic template сделать:
Код
Название: Re: функция с неопределенным числом параметров Отправлено: Serr500 от Май 14, 2013, 16:14 1) Оптимальнее всего, ИМХО, QVariantList.
2) Если не нравится, то читаем описание va_list, va_start, va_arg, va_end. 3) А статейку по ссылке можно было бы и до конца дочитать... ;) Название: Re: функция с неопределенным числом параметров Отправлено: Igors от Май 14, 2013, 19:37 1) Оптимальнее всего, ИМХО, QVariantList. Создаем контейнер (который может и не нужен). Пихаем в него объекты. Подаем. Потом контейнер удаляется вызвав деструктор каждого элемента. Ну ни хрена себе "оптимально" :) Я пыталась так сделать: Эта самодеятельность неуместна. Надо как в примере: va_start, в цикле va_arg, после всего va_end. Все там получаетсяКод: void Application::print(QVariant arg1,...){ Название: Re: функция с неопределенным числом параметров Отправлено: Serr500 от Май 14, 2013, 19:50 Ну ни хрена себе "оптимально" :) Упс... Хотел сказать "проще"... ;D Пора в отпуск. ;)Название: Re: функция с неопределенным числом параметров Отправлено: m_ax от Май 14, 2013, 20:15 Создаем контейнер (который может и не нужен). Пихаем в него объекты. Подаем. Потом контейнер удаляется вызвав деструктор каждого элемента. Ну ни хрена себе "оптимально" :) Если уж говорить об оптимальности, то variabic template реализация будет оптимальнее. Во-первых никаких циклов, доп. операций и функций. И во-вторых она развернётся в компил тайм. Да, + ещё и типы параметров туда можно любые всовывать. |