![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем доброго дня.
нужно понять, какой должна быть декларация/реализация функции, позволяющая использовать ее так:
т.е. кол-во аргументов должно быть variadic. в данном случае аргументов два. тип аргумента({"tag", value}) - допустим std::pair<std::string, T>, где Т - шаблонный параметр. я так полагаю, что тут нужно использовать initializer_list. все. дальше мысли не идут. спасибо. Up. по моему, как-то криво объяснил... в общем, сейчас делаю так:
prop_name - всегда строка. prop_value - значения произвольных типов. т.е. сначала заполняю список свойств, потом передаю его как запрос. сам принцип заполнения сильно раздражает. нет смысла создавать временный объект и заполнять его руками. потому и хочу избавиться от json_props. вот Это сообщение отредактировал(а) boostcoder - 26.5.2011, 08:22 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если добавить еще пару фигурных скобок, то можно сделать с initializer_list. Добавлено через 2 минуты и 44 секунды как то так :
Добавлено через 4 минуты и 28 секунд от этого не уйти.. только в одном случае он будет явно в другом нет.. |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а как быть со вторым параметром инициализации? его тип может быть произвольным. как вариант, завести нужное кол-во функций типа:
вот только что-то я накосячил... и не пойму что не так.. http://liveworkspace.org/code/d4eb112c5c90...8a232223107a171 Добавлено через 1 минуту и 5 секунд это понятно. это и имел ввиду. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не понятно, Вам нужно получить в итоге кортеж или массив ? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
массив pair`ов, где first - std::string, а second - произвольный тип. вот |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
хотя нет. можно чего-то типа:
это понятно. потому и ломаю голову.. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
раз json, то достаточно строк
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ну так что должно будет потом получиться из произвольного типа ? что от него ожидается ? |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нет. раз json, то нужно сериализовать пользовательские типы и формировать json. но спасибо. Добавлено через 2 минуты и 12 секунд
ну вот, допустим, при помощи initializer_list, инициализировать аргументы в соответствии с:
а внутри func() сериализовать их и сформировать json-структуру. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
можно разделить уровни - где кончаются пользовательские типы и начинается json если хочется типов, лучше явного добавления параметров в запрос не придумать если хочется простоты типа javascript/php, придется поступиться типами тут еще дело в том, что программа, формирующая json запрос понятия не имеет, какие _должны_ быть типы, так что все сводится к корректному преобразованию из пользовательского типа в строку Добавлено через 37 секунд Добавлено через 2 минуты и 42 секунды хорошей идеей мне кажется использования что-то типа boost::variant |
|||
|
||||
| boostcoder |
|
||||||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
да, знаю. это я как пример привел. так получается, что это единственный способ.. ок. http://liveworkspace.org/code/7f4928a72ee9...f4c35768df4a0eb остался второй вопрос: variadic-templates тут не поможет: http://liveworkspace.org/code/67bc8166f42f...c39f37e81ad30e5 что, тупо написать 10 функций(у меня минимум 3 значения и максимум 13) для нужного кол-ва аргументов? Добавлено @ 11:09
именно от этого и хочу избавиться.
почему?
почему?
почему? зы ух сколько вопросов Добавлено @ 11:12
а вот этого не надо. мне нужна информация о типе. и как показано в первом посте - у меня работает. понимает что за тип. и формирует значение соответствующего типа(строка/double/массив) Это сообщение отредактировал(а) boostcoder - 26.5.2011, 11:19 |
||||||||||
|
|||||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
boostcoder, Вы не поняли.
прочитайте еще раз и подумайте |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
если массив - идем в рекурсию. и получается прям как это: http://en.wikipedia.org/wiki/Json#Data_typ...tax_and_example и никакого рукоблудства Добавлено через 1 минуту и 29 секунд то, что я не понял, я как раз и понял. потому столько вопросов задал. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |