Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
День добрый. Есть ли возможность стандартными средствами C++ 11 получить доступ из вне к параметрам callback? Ну, приблизительно ето будет выглядеть так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Собственно главный вопрос, как реализовать вот это: Код: plaintext 1. 2. Также нужно узнать сколько вобще параметров у ф-ции, т.к. к этому callback могут биндится функции с разным количеством параметров, но не меньше обявленного в примере кода. Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 10:28 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
dj_raven, То, что вы хотите, не имеет смысла (по крайней мере нет смысла в том коде который вы привели). У вас есть экземпляр std::function. Для него можно получить только информацию о типах аргументов. Значения аргументов получить нельзя так как там нет никаких значений. Значения появляются в момент вызова этой функции, т.е. доступны только внутри колбэка. Задайте вопрос по-другому, приведите реальный код, тогда может будет понятно, что вы на самом деле хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 11:28 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, Реальный код гораздо сложенее чем приведённый выше, и займет очень много места. Значения уже есть, и ф-ция биндится к fn1 с помощью bind Код: plaintext 1. По сути мне нужен доступ не к значениям, а получить ссылку на уже существующий обьект param2, ссылку на который мы передали задолго до этого с помощью bind. Это можно как-то сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 11:40 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
dj_raven, что значит "зачистить параметры перед вызовом"? При вызове функции создается кадр стека по размеру переданных параметров, затем эти параметры инициализируются вызывающим кодом и после этого выполняется invoke с помещением в стек точки возврата. В i386, при вызове функции, на вершину кадра стека указывает регистр ebp, а esp указывает на сохраненные перед вызовом значения регистров и адрес возврата. Как только callback функция отработала, значения в кадре стека, с большой долей вероятности, инвалидны. Ты не мудри, а поясни, какой смысл во всех этих "приседаниях"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 12:00 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
dj_ravenПо сути мне нужен доступ не к значениям, а получить ссылку на уже существующий обьект param2, ссылку на который мы передали задолго до этого с помощью bind. Это можно как-то сделать? Нет. Нельзя. В типе возвращаемом std::bind нет доступа к информации о типах всего туда передано. Открытым остается только количество и типы входных аргументов (точнее интерфейса к этому нет, но это теоретически можно выяснить). Про забинденную функцию и что в нее передано информации нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 12:23 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
prm2 i prm3 это классы, им надо вызвать сначала деструктор, а потом конструктор. Это eдинственная цель этого марлезонского балета. Вроде это кажется бессмысленным, но учитывая что эти аргументы хранят конфиг для определённой части проекта, который надо зачистить в определённый момент, и не факт что после этого колбек будет вызван, смысл это имеет (без конфига компоненты отрубаются). Т.е. мне нужны ссылки на все аргументы функций чтобы их зачистить(вызвать сначала деструктор, а потом конструктор). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 12:25 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, Всё, спасибо, вопрос можно закрывать. Будем реализовывать это через другое место :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 12:27 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
dj_raven, к кадру стека somefun можно получить доступ из somefun2 только если somefun в своей реализации вызывает somefun2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 12:55 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
dj_raven, экземпляры someclass1 и someclass2 передаются по ссылке. Следовательно, они уже где-то проинициализированы и любые не const методы экземпляров этих классов, вызванные с указанием ссылки на экземпляр, могут приводить к изменению переменных-членов этих экземпляров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 13:03 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
dj_ravenСобственно главный вопрос, как реализовать вот это: Код: plaintext 1. 2. Также нужно узнать сколько вобще параметров у ф-ции, т.к. к этому callback могут биндится функции с разным количеством параметров, но не меньше обявленного в примере кода. Это на каком же языке тебя учили программировать, если ты не можешь жить без такого извращения? Ничего из этого невозможно в принципе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 22:39 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Учили его на ФохБазе. Но проблема не в нем, а в черезжопном STL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 22:52 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
Siemarglа в черезжопном STL в этом мире есть что-нибудь хорошее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 23:02 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
А по моему, все на самом деле элементарно и смотреть на стандарты тут не надо. А надо смотреть на обычную и древнюю императивщину :) Создаешь синглтон на основе map, в котором ключом будет имя функции. В самих функциях, чьи параметры надо знать из других функций вызваешь функцию сериализации в этот синглтон, а там где надо узнать - соответсвенно десериализуешь. Все просто, легко и работает во всех языках где есть синтаксис функций и глобальных переменных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2017, 23:33 |
|
||
|
Получить ссылки на параметры колбека
|
|||
|---|---|---|---|
|
#18+
ИзопропилSiemarglа в черезжопном STL в этом мире есть что-нибудь хорошее? А все хорошее в этом мире либо аморально, либо приводит к ожирению (с) Анекдот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 01:18 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39458707&tid=2018167]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 270ms |

| 0 / 0 |
