Ошибка 'path' is not captured
- Войдите на сайт для отправки комментариев
Сб, 16/12/2017 - 12:14
Хочу передать в функцию строку, но выдает ошибку 'path' is not captured
Функция:
void getTxt(char path) { // Code... aClient->onConnect([](void * arg, AsyncClient * client) { char request[128]; sprintf(request, "GET %s HTTP/1.1\r\n" "Host: %s\r\n" "User-Agent: %s\r\n" "Connection: close\r\n\r\n", path, OTA_HOST, DEVICE_MODEL ); client->write(request); }, NULL); // Code... }
Пробовал String использовать, таже ошибка.
Хочу передать в функцию строку, но выдает ошибку 'path' is not captured
Функция:
Пробовал String использовать, таже ошибка.
Дополнил несмного функцию, aClient = new AsyncClient();
mcmega, Вы не строку передаете, а один символ.
Так я и так пробовал:
и так:
Как правильно сделать? Помогите пожалуйста!
это были все варианты? ;););)
в самом верхнем посте, после char, * поставить, в некоторых версиях среды еще const добавить.
Не работает, та же ошибка
и с const и без не работает
mcmega,
Вы где-то содрали код, использующий лямбда функцию, при этом не понимаете ни сторчки и ни буквы в нём. Но, не расстраивайтесь, также как и Вы, в нём ни буквы не понимают 95% т.н. "разрабов" с десятилетним стажем работы и огромными понтами. Вы, по незнанию, полезли в один из самых (в смысле "самых самых") слложных разделов процедурного программирования.
Это не Ваша лига - Вам ещё рано. Ищите в сети другой пример для сдирания.
Я не могу объяснить Вам Вашу ошибку. Вы просто не знаете большей части слов, которые при этом будут использованы. Поправить я бы мог, но это Вам не поможе, т.к. будет работать только до тех пор, пока Вы какую-нибудь запятую не измените, а там опять свалится, т.к. понимания-то нет!
Так что забудьте про это - ищиите другой пример.
Впрочем, если Вы мне не верите, и считаете, что разберётесь - в добрый путь. гуглите по словам "лямбда функции С++"
Это пример использования асинхронного запроса на сервер, но я не хочу создавать несколько одинаковых функций (отличие только в пути). Поэтому попытался передать путь прямо в нее...
Спасибо за замечание, буду читать о лямбда функциях. Но был бы оченьпризнателен в помощи по этой проблеме.
в строке 3 ппоставь [=], вместо []
Спасибо Огромное! Заработало!
Интересная эта тема с лямбда выражениями, сижу изучаю ;)
чтобы меньше читать: штука, которая начигнается с [], это лямбда функция.Это не самый простой объект изучения.
В контексте твоей нужды важно, что по-умолчанию оттуда НЕ ДОСТУПНЫ внешние переменные.
Знак [=] делает их доступными... как-бы тебе сказать... ну пусть будет "по чтению". Этого тебе достаточно.
чтобы меньше читать: штука, которая начигнается с [], это лямбда функция.Это не самый простой объект изучения.
В контексте твоей нужды важно, что по-умолчанию оттуда НЕ ДОСТУПНЫ внешние переменные.
Знак [=] делает их доступными... как-бы тебе сказать... ну пусть будет "по чтению". Этого тебе достаточно.
Спасибо за пояснения! Я не добрался еще до такого уровня, разбираюсь с указателями и ссылками пока, но обязательно пойду дальше. После асмы, С++ мне нраится!
Это не Ваша лига - Вам ещё рано. Ищите в сети другой пример для сдирания.
Женя, Шабат шалом! Мне кажется, что мы с Вами в противофазе!
Когда у меня злое настроение и я гоняю чайников - Вы их консультируете. И наоборот!! ;) ;) ;)
По утрам, да еще и в Шабат - я точно добрый. Сам Б..г велел! (...я знаю, мне говорили) ;)
Когда у меня злое настроение и я гоняю чайников - Вы их консультируете. И наоборот!! ;) ;) ;)
На самом деле, чайники - это нормально. Ничего в них плохого нет. Мерзость - это полуграмотные википедики с непомерными понтами. Вчера один начал хамить и бычить, ткнул его носом прямо в даташит, а сам думаю: "начнёт спорить с даташитом (ссылаясь на википедию) или хотя бы этого не делать ума хватит". Хватило! Спорить с даташитом он не стал, а просто использовал "последний и непобиваемый аргумент любого быдла" - послал меня нах :)))) Вот так и живём :)
.
Интересная эта тема с лямбда выражениями, сижу изучаю ;)
Изучать лямбда выражения в С++ занятие неблагодарное, если не знать что это такое вообще. Тем более, в этот язык они притянуты за уши и реализация совершенно неестественная, т.к. они плохо ложатся в структуру языка.
Поэтому, если хочется действительно понимать это, то лямбда выражения нужно изучать в такой последовательности.
1. Начать с изучения лямбда-исчисления как такового (это раздел математики). На вид там голимый гнусный матан с кучей греческих букв, но если просто внимательно читать и сопоставлять буквы (не терять нить), то ничего там особо сложного нет. Это даст понимание собственно основной лямбда-идеи
2. Изучить какой-нибудь специальный лямбда-язык, т.е. язык в котором лямба-выражения - основа языка. а не "сбоку припёка" как в С++ (например, ЛИСП).
3. После пунктов №№1 и 2 можно переходить к их реализации в С++. В этом случае, Вам не придётся сквозь что-то продираться, а Ваше изучение будет состоять лишь в том. чтобы отметить "ага, вот эта идея тут вот так реализована, а эта - вот так" и немного поматериться на то, что ряд очень полезных вещей в С++ не вошли вовсе (ну, не предназначен этот язык для лямбда-исчисления - чужое оно для него).
Вот как-то так это нужно изучать. Но это, конечно, путь профессионала, а не человека, которому надо раз в жизни использовать и забыть. Вы сами решайте как Вам и что делать.
У меня цель изучить хорошо, очень хорошо, как по мне - это основа! Зная С/С++ можно очень многое сделать, а если и правильно понимать как работает компилятор и какой способ лучше использовать при решении разных задачах, то можно в какой то степени приблизиться и к асме. Экскаватор все же приятнее использовать, нежели лопату ;)