В последнее время у меня был некоторый опыт работы с указателями на функции в C. Продолжая традицию отвечать на ваши собственные вопросы, я решил сделать небольшое краткое изложение самых основ, для тех, кто нуждается в быстром погружении в...
Указатель функции - это указатель на функцию, которая может храниться в переменной. Это позволяет во время выполнения выбирать, какую функцию запускать.
В последнее время у меня был некоторый опыт работы с указателями на функции в C. Продолжая традицию отвечать на ваши собственные вопросы, я решил сделать небольшое краткое изложение самых основ, для тех, кто нуждается в быстром погружении в...
В C ++, когда и как вы используете функцию обратного вызова? РЕДАКТИРОВАТЬ: Я хотел бы увидеть простой пример, чтобы написать функцию обратного
У меня есть метод, который составляет около десяти строк кода. Я хочу создать больше методов, которые делают одно и то же, за исключением небольшого вычисления, которое изменит одну строку кода. Это идеальное приложение для передачи указателя на функцию для замены этой строки, но в Java нет...
Я пытаюсь сохранить в std::tupleразличном количестве значений, которые позже будут использоваться в качестве аргументов для вызова указателя функции, который соответствует сохраненным типам. Я создал упрощенный пример, показывающий проблему, которую я пытаюсь решить: #include <iostream>...
Я всегда был немного озадачен, когда читал код других людей, в котором были typedef для указателей на функции с аргументами. Я помню, что мне потребовалось некоторое время, чтобы обойти такое определение, пытаясь понять численный алгоритм, написанный на C некоторое время назад. Итак, не могли бы вы...
Почему следующие работы? 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;...
Можно ли передать лямбда-функцию в качестве указателя на функцию? Если это так, я должен что-то делать неправильно, потому что я получаю ошибку компиляции. Рассмотрим следующий пример using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn...
Я только сегодня увидел фотографию и думаю, что буду благодарен за объяснения. Итак, вот картинка: Я нашел это смущающим и задавался вопросом, практичны ли когда-либо такие коды. Я гуглил картинку и нашел другую картинку в этой записи Reddit, и вот эта картинка: Так что это «чтение по спирали»...
Есть ли способ передать функцию обратного вызова в методе Java? Поведение, которое я пытаюсь имитировать, - это .Net Delegate, передаваемый в функцию. Я видел людей, предлагающих создать отдельный объект, но это кажется излишним, однако я знаю, что иногда избыточное убийство - единственный способ...
Для одного класса я хочу сохранить несколько указателей на функции-члены одного класса в одном mapобъекте хранения std::function. Но я терплю неудачу в самом начале с этим кодом: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f =...
Как я должен использовать массив указателей на функции в C? Как я могу их
Я нашел Cкод, который печатает от 1 до 1000 без циклов или условных выражений : но я не понимаю, как это работает. Может кто-нибудь пройти код и объяснить каждую строку? #include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit -...
Это может быть что-то обычное и тривиальное, но мне кажется, что мне трудно найти конкретный ответ. В C # существует концепция делегатов, которая тесно связана с идеей указателей на функции из C ++. Есть ли подобная функциональность в Java? Учитывая, что указатели в некоторой степени отсутствуют,...
Я читал, что преобразование указателя функции в указатель данных и наоборот работает на большинстве платформ, но не гарантируется. Почему это так? Разве оба не должны быть просто адресами в основной памяти и, следовательно, быть...
Вопрос в следующем: рассмотрите этот фрагмент кода: #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 , b , a - b); }...
Как получить указатель на функцию для функции-члена класса, а затем вызвать эту функцию-член с конкретным объектом? Я хочу написать: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark) (pDog); … Также, если возможно, я хотел бы...
Я играл с лямбдами C ++ и их неявным преобразованием в указатели на функции. В моем начальном примере они использовались в качестве обратного вызова для функции ftw. Это работает, как ожидалось. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback =...
Я хотел бы настроить указатель на функцию как член класса, который является указателем на другую функцию в том же классе. Причины, по которым я это делаю, сложны. В этом примере я хотел бы, чтобы результат был «1» class A { public: int f(); int (*x)(); } int A::f() { return 1; } int main() { A a;...
Скажем, у меня есть функция, которая принимает void (*)(void*)указатель на функцию для использования в качестве обратного вызова: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Теперь, если у меня есть такая функция: void my_callback_function(struct my_struct* arg); Могу ли я...
Я не могу понять этого: int main() { int (*) (int *) = 5; return 0; } Приведенное выше назначение компилируется с g ++ c ++ 11. Я знаю, что int (*) (int *)это указатель на функцию, которая принимает (int *)аргумент as и возвращает int, но я не понимаю, как вы могли бы приравнять его к 5. Сначала я...