Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:42 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
gera3323, сделал так (this->*_class3)(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:51 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
gera3323gera3323, сделал так (this->*_class3)(); Или так: Код: plaintext 1. Смысл в том, что метод класса нельзя вызвать без указания объекта (указателя или ссылки) этого класса. Вместо this можно подставить другой указатель (на другой объект того же класса, если метод не виртуальный). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:54 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petrav, спасибо за вариант. а можно как-нибудь сделать вот так ? void(CControl_console::*pfun1)( ); void(CControl_console::*pfun1)( std::string ); что бы функции в результате были перегружены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 21:57 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petravесли метод не виртуальный Нет разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:07 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
gera3323petrav, спасибо за вариант. а можно как-нибудь сделать вот так ? void(CControl_console::*pfun1)( ); void(CControl_console::*pfun1)( std::string ); что бы функции в результате были перегружены Да. Главное пойми, что вместо this можно использовать указатель на другой объект, не только this. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:07 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskypetravесли метод не виртуальный Нет разницы. Есть. Если указатель будет на объект класса наследника, а метод не виртуальный, но переопределённый... То хорошего результата мы не добьёмся. Может, я просто непонятно выразился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:10 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petravСмысл в том, что метод класса нельзя вызвать без указания объекта (указателя или ссылки) этого класса. Даже так: petravСмысл в том, что метод класса нельзя вызвать без указания объекта (указателя на объект, или ссылки на объект, или самого объекта) этого класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:15 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petrav, Эта проблема не имеет отношения к указателям на методы. Если просто по указателю на предок вызвать не виртуальный метод, который переопределен в наследнике, то будет точно такой же эффект. Поэтому без разницы, с какими методами вы работаете через указатели. Все будет работать также как и без указателей (либо работать либо нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:17 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskypetrav, Эта проблема не имеет отношения к указателям на методы. Если просто по указателю на предок вызвать не виртуальный метод, который переопределен в наследнике, то будет точно такой же эффект. Поэтому без разницы, с какими методами вы работаете через указатели. Все будет работать также как и без указателей (либо работать либо нет). Ну это само собой. :) Но мы же в контексте указателей на методы говорили. Я не стал расширяться на целую лекцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:21 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, Как по вашему, почему при взятии адреса метода нельзя явно указывать сигнатуру метода? Я ту недавно столкнулся с проблемами: 18219078 . И auto у нас отпадает. PS: Насчет свободных-перегруженных функций не помню, но думаю там так же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:32 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petravКак по вашему, почему при взятии адреса метода нельзя явно указывать сигнатуру метода? Я ту недавно столкнулся с проблемами: 18219078 . И auto у нас отпадает. PS: Насчет свободных-перегруженных функций не помню, но думаю там так же. Можно, но только если конкретную перегрузку можно вывести из типа приемника указателя. А как вы хотели иначе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:47 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:49 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskypetravКак по вашему, почему при взятии адреса метода нельзя явно указывать сигнатуру метода? Я ту недавно столкнулся с проблемами: 18219078 . И auto у нас отпадает. PS: Насчет свободных-перегруженных функций не помню, но думаю там так же. Можно, но только если конкретную перегрузку можно вывести из типа приемника указателя. В этом и проблема. Anatoly MoskovskyА как вы хотели иначе? Вот так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:52 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petravВот так: Код: plaintext 1. Это существенно усложняет парсер, потому что в том контексте по текущим правилам не допускаются типы, а только значения. И ради того чтобы сэкономить вам пару символов в исходнике никто не будет усложнять компиляторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 22:58 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskypetravВот так: Код: plaintext 1. Это существенно усложняет парсер, потому что в том контексте по текущим правилам не допускаются типы, а только значения. Поясните, если не затруднит. Не понял. Про типы и значения. Anatoly MoskovskyИ ради того чтобы сэкономить вам пару символов в исходнике никто не будет усложнять компиляторы. Это не пара символов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Я ж тут auto не просто так пишу. Это мог бы быть параметр шаблона, а не auto. Там по ссылке всё видно. И уж где там усложнение парсера, если я в предлагаемом синтаксисе явно указываю перегруженный метод? Прямо тыкаю в него! Упрощение жеж! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 23:21 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
petravПоясните, если не затруднит. Не понял. Про типы и значения. Внутри () ожидается выражение. А вы хотите чтобы там иногда в зависимости от контекста были объявления аргументов. Это усложняет парсер. petravЭто не пара символов: Я не имел в виду буквально )) Вот так - нормально. Не сотрете клавиши )) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 02:29 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
никто не сказал про std::bind и std::function ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 15:34 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
alexy_blackникто не сказал про std::bind и std::function ? Не работают с перегруженным функциями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 18:43 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
При желании всегда можно изобразить что-то вроде такого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 19:28 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
wstПри желании всегда можно изобразить что-то Судя по всему вы не читали предыдущие сообщения )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 19:29 |
|
||
|
указатель на функции внутри классе C++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskywst... Судя по всему вы не читали предыдущие сообщения )) Если в первую очередь отталкиваться от исходного сообщения, а именно строк Код: plaintext 1. 2. 3. то вариант с Код: plaintext 1. 2. вполне сойдет за выход. А сэкономить краску на клавиатуре можно натыкав потом в f замыканий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2015, 19:43 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39078028&tid=2018798]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 132ms |

| 0 / 0 |
