Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
стандартный функциональный объект с одним полем
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть ли сейчас стандартный функциональный объект с одним полем? Хочется улучшить код. Он работает, но мне не нравится то, что параметр this путешествует по всей цепочке вызовов, хотя используется только в конце, как wnd, где и без того известен. Заводить переменную уровня модуля не очень интересно, хотя текст короче будет. Свой тип городить для этого тоже не хочется, короче не выйдет. Есть обработчик в главном окне, его задача показать историю использования файлов, такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. У класса истории есть внутренний класс диалога, который запускается модально: Код: plaintext 1. 2. 3. 4. 5. В диалоге есть кнопка Открыть, по нажатию которой надо запустить метод MyFrame::OpenFile: Код: plaintext 1. 2. 3. 4. Хотелось бы чего-то наподобие: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но я не знаю какой класс использовать как functional_object_with_1_field и что написать в качестве const std::unknown_function_object_class_with_1_field<void(const wstring&)>& onOpenReactor в void History::ShowHistory и в конструкторе диалога и соответственно в мембере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2019, 11:54 |
|
||
|
стандартный функциональный объект с одним полем
|
|||
|---|---|---|---|
|
#18+
Функциональный объект с одним полем — достойный кандидат на добавление в стандартную библиотеку! Конечно же нет, лол. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 03:26 |
|
||
|
стандартный функциональный объект с одним полем
|
|||
|---|---|---|---|
|
#18+
teo609, так передай в свою лямбду параметр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 09:48 |
|
||
|
стандартный функциональный объект с одним полем
|
|||
|---|---|---|---|
|
#18+
Siemarglteo609, так передай в свою лямбду параметр Смысл вопроса в том, чтобы убрать параметр, который уже передается, с сокращением общего количества кода. Код: plaintext 1. 2. Здесь в лямбду приходит параметр wnd, который не что иное как this в том же вызове И даже по смыслу, задача этой лямбды открыть файл, для чего использовать метод этого же класса. Код: plaintext 1. Для открытия файла нужно только его имя, которое берется из диалога, который открывается из метода другого класса. И в методе Код: plaintext 1. в описании реактора параметр wxWindow * не нужен ни за чем, кроме как затем, чтобы он добрался до лямбды. Таких описаний реактора еще два, в мембере диалога и в его конструкторе, а вызывается реактор, он же лямбда, по кнопке диалога Открыть . И нигде в этих типах лямбд указатель wxWindow *wnd, который будет использоваться только как frame->, по логике программы не нужен, поэтому и хочется его убрать. Пока я придумал два пути решения: а) переменную уровня модуля, что будет короче, но не канонично как-то; б) сделать свой класс с мембером, но тогда общее количество кода не уменьшится, что тоже плохо. Если бы функциональный объект с одним полем был бы в std, он бы здесь пригодился. А так пока идет к тому что пойду на вариант а), так меньше кода изучать при сопровождении. Сорри за повтор, но похоже в исходном комменте я недостаточно ясно описал вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2019, 23:58 |
|
||
|
стандартный функциональный объект с одним полем
|
|||
|---|---|---|---|
|
#18+
teo609, я про лямбды и захват, ежели что ( это типа [=myvar]{a+=myvar;} ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2019, 01:15 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=13&tid=2017613]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 127ms |

| 0 / 0 |
