Вопросы с тегом «function-pointers»

Указатель функции - это указатель на функцию, которая может храниться в переменной. Это позволяет во время выполнения выбирать, какую функцию запускать.

11
Как работают указатели на функции в C?
В последнее время у меня был некоторый опыт работы с указателями на функции в C. Продолжая традицию отвечать на ваши собственные вопросы, я решил сделать небольшое краткое изложение самых основ, для тех, кто нуждается в быстром погружении в предмет.
1235 c  function-pointers 


21
Что является ближайшей заменой указателю на функцию в Java?
У меня есть метод, который составляет около десяти строк кода. Я хочу создать больше методов, которые делают одно и то же, за исключением небольшого вычисления, которое изменит одну строку кода. Это идеальное приложение для передачи указателя на функцию для замены этой строки, но в Java нет указателей на функции. Какая …

8
«Распаковка» кортежа для вызова соответствующего указателя на функцию
Я пытаюсь сохранить в std::tupleразличном количестве значений, которые позже будут использоваться в качестве аргументов для вызова указателя функции, который соответствует сохраненным типам. Я создал упрощенный пример, показывающий проблему, которую я пытаюсь решить: #include <iostream> #include <tuple> void f(int a, double b, void* c) { std::cout << a << ":" << …

7
Понимание typedefs для указателей на функции в C
Я всегда был немного озадачен, когда читал код других людей, в котором были typedef для указателей на функции с аргументами. Я помню, что мне потребовалось некоторое время, чтобы обойти такое определение, пытаясь понять численный алгоритм, написанный на C некоторое время назад. Итак, не могли бы вы поделиться своими советами и …

3
Почему определения указателей на функции работают с любым количеством амперсандов '&' или звездочек '*'?
Почему следующие работы? void foo() { cout << "Foo to you too!\n"; }; int main() { void (*p1_foo)() = foo; void (*p2_foo)() = *foo; void (*p3_foo)() = &foo; void (*p4_foo)() = *&foo; void (*p5_foo)() = &*foo; void (*p6_foo)() = **foo; void (*p7_foo)() = **********************foo; (*p1_foo)(); (*p2_foo)(); (*p3_foo)(); (*p4_foo)(); (*p5_foo)(); (*p6_foo)(); …
216 c++  c  function-pointers 

8
Передача лямбда-захвата в качестве указателя на функцию
Можно ли передать лямбда-функцию в качестве указателя на функцию? Если это так, я должен что-то делать неправильно, потому что я получаю ошибку компиляции. Рассмотрим следующий пример using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; …

13
С не так сложно: void (* (* f []) ()) ()
Я только сегодня увидел фотографию и думаю, что буду благодарен за объяснения. Итак, вот картинка: Я нашел это смущающим и задавался вопросом, практичны ли когда-либо такие коды. Я гуглил картинку и нашел другую картинку в этой записи Reddit, и вот эта картинка: Так что это «чтение по спирали» является чем-то …

17
Функции обратного вызова в Java
Есть ли способ передать функцию обратного вызова в методе Java? Поведение, которое я пытаюсь имитировать, - это .Net Delegate, передаваемый в функцию. Я видел людей, предлагающих создать отдельный объект, но это кажется излишним, однако я знаю, что иногда избыточное убийство - единственный способ сделать что-то.

6
Использование универсальных объектов std :: function с функциями-членами в одном классе
Для одного класса я хочу сохранить несколько указателей на функции-члены одного класса в одном mapобъекте хранения std::function. Но я терплю неудачу в самом начале с этим кодом: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; Я получаю error C2064: term …


2
Как работает код C, который печатает от 1 до 1000 без циклов или условных операторов?
Я нашел Cкод, который печатает от 1 до 1000 без циклов или условных выражений : но я не понимаю, как это работает. Может кто-нибудь пройти код и объяснить каждую строку? #include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit - &main)*(j/1000))(j+1); }

11
Указатели на функции в Java
Это может быть что-то обычное и тривиальное, но мне кажется, что мне трудно найти конкретный ответ. В C # существует концепция делегатов, которая тесно связана с идеей указателей на функции из C ++. Есть ли подобная функциональность в Java? Учитывая, что указатели в некоторой степени отсутствуют, что лучше для этого? …

14
Почему указатели на функции и указатели данных несовместимы в C / C ++?
Я читал, что преобразование указателя функции в указатель данных и наоборот работает на большинстве платформ, но не гарантируется. Почему это так? Разве оба не должны быть просто адресами в основной памяти и, следовательно, быть совместимыми?

9
Как передать функцию-член, если ожидается бесплатная функция?
Вопрос в следующем: рассмотрите этот фрагмент кода: #include <iostream> class aClass { public: void aTest(int a, int b) { printf("%d + %d = %d", a, b, a + b); } }; void function1(void (*function)(int, int)) { function(1, 1); } void test(int a,int b) { printf("%d - %d = %d", a …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.