реклама на сайте
подробности

 
 
> Указатели на функции С++, Корректность применения
nice_vladi
сообщение Nov 11 2017, 10:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 7-09-16
Из: Томск
Пользователь №: 93 239



Всем привет.

Начал осваивать С++ и в один прекрасный момент подумал, что было бы не плохо вызывать функции по указателям на них.

Никаких ивентов и тому подобных вещей. При инициализации передал указатель на функцию создаваемому классу - и пожалуйста, он ею щелкает, когда душе угодно. Допустим, что-то на GUI обновляет.

НО! В какой-то момент я задумался о целесообразности применения, да и вообще корректности использования. Приведу пример: есть такая вещь, как goto: Но ее применять не рекомендуется,
потому-что - потому-что.

Есть ли какие-то подобные рекомендации по применению указателей на функции? Ну и вообще, подводные камни, так называемые.

Visual Studio 2013

Спасибо! biggrin.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
k155la3
сообщение Nov 11 2017, 16:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Указатели на функции использовать можно, если в этом есть смысл или необходимость.
Например, Вы выбираете определенное действие в некой последовательности, из набора, скажем, 100 функций.
Причем эти наборы разные, и/или могут вычисляться.
Приечем Вы можете в любое время заменить любой из указателей, не изменяя основного алгоритма.
В ЭТОМ случае создаете массив указателей на функциии и вызов(а) делеаете по индексу, "переключая" или вычисляя нужный.
Это скорее метода для С.
------
А то что Вы спрашиваете, по-моему, и так обеспечивается CPP операторами точка и -->
при вызове метода (функции), своего или унаследованного.


Go to the top of the page
 
+Quote Post
nice_vladi
сообщение Nov 13 2017, 03:10
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 7-09-16
Из: Томск
Пользователь №: 93 239



Цитата(k155la3 @ Nov 11 2017, 17:27) *
Указатели на функции использовать можно, если в этом есть смысл или необходимость.
Например, Вы выбираете определенное действие в некой последовательности, из набора, скажем, 100 функций.
Причем эти наборы разные, и/или могут вычисляться.
Приечем Вы можете в любое время заменить любой из указателей, не изменяя основного алгоритма.
В ЭТОМ случае создаете массив указателей на функциии и вызов(а) делеаете по индексу, "переключая" или вычисляя нужный.
Это скорее метода для С.
------
А то что Вы спрашиваете, по-моему, и так обеспечивается CPP операторами точка и -->
при вызове метода (функции), своего или унаследованного.


Да, обеспечивается. Но при обращении "сверху вниз". Допустим, из основного окна интерфейса в дочерние, создаваемые в нем. Мне же нужно наоборот, ходить "снизу вверх". Допустим, из созданных вкладок интерфейса в их "создателя", основное окно.

Имел опыт работы с Qt - там применялись сигнал-слоты. В Visual studio нашел подобное решение - это __event. Пользуюсь ими. Но в процессе поиска (до того, как обнаружил ивенты) пытался как-то по-другому достигнуть результата. Тут и начали возникать вопросы с указателями на функции.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 22:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016