Указатель на функцию
От: emergen  
Дата: 27.02.15 08:46
Оценка:
Добрый день, появилась необходимость в зависимости от типа вычисления использовать функцию, но не хочется ветвлений, подскажите пожалуйста как получить указатель на функцию, после чего вызывать функцию по указателю независимо от варианта вычисления (предварительно записав в указатель адрес нужной функции)?
square = [](int x) { return x * x; }

cube = [](int x) { return x * x; }


if(one)
{
    pointer_on_method = square;
}
if(two)
{
    pointer_on_method = cube;
}


....

использовать далее


pointer_on_method( x )
Отредактировано 27.02.2015 8:46 emergen . Предыдущая версия .
Re: Указатель на функцию
От: jazzer Россия Skype: enerjazzer
Дата: 27.02.15 08:51
Оценка: 3 (1)
Здравствуйте, emergen, Вы писали:

E>Добрый день, появилась необходимость в зависимости от типа вычисления использовать функцию, но не хочется ветвлений, подскажите пожалуйста как получить указатель на функцию, после чего вызывать функцию по указателю независимо от варианта вычисления (предварительно записав в указатель адрес нужной функции)?


объяви pointer_on_method как std::function<int(int)>.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Указатель на функцию
От: emergen  
Дата: 27.02.15 09:05
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, emergen, Вы писали:


E>>Добрый день, появилась необходимость в зависимости от типа вычисления использовать функцию, но не хочется ветвлений, подскажите пожалуйста как получить указатель на функцию, после чего вызывать функцию по указателю независимо от варианта вычисления (предварительно записав в указатель адрес нужной функции)?


J>объяви pointer_on_method как std::function<int(int)>.



как быть если функции cube и square являются методами одного класса MyClass?
Re: Указатель на функцию
От: _Artem_ Россия  
Дата: 27.02.15 09:34
Оценка: +1
Здравствуйте, emergen, Вы писали:

E>Добрый день, появилась необходимость в зависимости от типа вычисления использовать функцию, но не хочется ветвлений, подскажите пожалуйста как получить указатель на функцию, после чего вызывать функцию по указателю независимо от варианта вычисления (предварительно записав в указатель адрес нужной функции)?


Попахивает костылями. Сформулируй изначальную задачу.

ЗЫ
Вот здесь рассматриваются указатели на функции класса: http://alenacpp.blogspot.ru/2007/04/blog-post.html
Re[3]: Указатель на функцию
От: _Artem_ Россия  
Дата: 27.02.15 09:36
Оценка: +1
Здравствуйте, emergen, Вы писали:

E>как быть если функции cube и square являются методами одного класса MyClass?


Ответ кроется здесь: http://stackoverflow.com/questions/5154116/stdfunction-to-member-function

ЗЫ научись таки пользоваться поиском.
Re[2]: Указатель на функцию
От: Кодт Россия  
Дата: 27.02.15 13:35
Оценка: +1
Здравствуйте, _Artem_, Вы писали:

_A_>Попахивает костылями. Сформулируй изначальную задачу.


Не попахивает, а размахивает

_A_>Вот здесь рассматриваются указатели на функции класса: http://alenacpp.blogspot.ru/2007/04/blog-post.html


С 2007 года наука шагнула далеко вперёд... Голыми указателями теперь только детишек пугать.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.