Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Указатель на функцию из класса
|
|||
|---|---|---|---|
|
#18+
В общем, можете кидать камнями. Что-то не втыкаю в пятницу с утра... как сделать чтобы работало знаю, но для того придется отказать от классов. А этого не хочется. В общем суть такая. Есть класс вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Есть отдельная функция, вне класса, в библиотеке стандартного набора: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Как видим, она принимает на вход указатель на функцию a. А теперь хочется... сделать вот так Код: plaintext 1. 2. 3. 4. Какие идеи? Главное, что с функцией deriv делать ничего нельзя )) Она входит в состав модуля стандартных функций, с которой работают овер 20 других программ )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 09:45 |
|
||
|
Указатель на функцию из класса
|
|||
|---|---|---|---|
|
#18+
Suzeren, Если коротко, то никак, даже через лямбды . Если TDetermination это синглтон, то можно его в коллбэк функции получить обычным путём. Ну а если нет, то придётся тебе заводить глобальный стейт и получать к нему доступ в функции, что, конечно же, является очень плохим стилем программирования, но сишники такое любят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 10:56 |
|
||
|
Указатель на функцию из класса
|
|||
|---|---|---|---|
|
#18+
SuzerenКакие идеи? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. если интерфейс функции deriv изменить нельзя, то можно вместо одного из указателей void a( double *, double *) передавать структуру вида Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. структуру готовим заранее и передаем указатель на нее в качестве завуалированного указателя на double в deriv ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 12:08 |
|
||
|
Указатель на функцию из класса
|
|||
|---|---|---|---|
|
#18+
Понятно. Ну, я ожидал такого ответа. Правда надеялся, что "а вдруг есть какой-то изуверский, запрещенный религией, но красивый способ" :-) В итоге написал как завещали деды - программу без всяких классов. Не стал выпендриваться, что уж тут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 12:08 |
|
||
|
Указатель на функцию из класса
|
|||
|---|---|---|---|
|
#18+
Cerebrum, static мне не подходит, потому что функция Ahead помимо прочего работает с членами класса TDetermination. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 12:10 |
|
||
|
Указатель на функцию из класса
|
|||
|---|---|---|---|
|
#18+
SuzerenCerebrum, static мне не подходит, потому что функция Ahead помимо прочего работает с членами класса TDetermination. так у тебя в внутри s_Ahead идет обращение к нестатичной Ahead благодаря указателю this, Код: plaintext 1. который ты передашь. Задача s_Ahead как раз избавиться от static, что она и делает, а дальше в игру вступает не-static функция Ahead, в которой делай все что хочешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2018, 12:16 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39696127&tid=2017767]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 159ms |

| 0 / 0 |
