Ultimamente, tive alguma experiência com ponteiros de função em C. Continuando com a tradição de responder às suas próprias perguntas, decidi fazer um pequeno resumo do básico, para aqueles que precisam mergulhar rapidamente no
Um ponteiro de função é um ponteiro para uma função, que pode ser armazenado em uma variável. Ele permite uma escolha em tempo de execução de qual função executar.
Ultimamente, tive alguma experiência com ponteiros de função em C. Continuando com a tradição de responder às suas próprias perguntas, decidi fazer um pequeno resumo do básico, para aqueles que precisam mergulhar rapidamente no
No C ++, quando e como você usa uma função de retorno de chamada? EDIT: Gostaria de ver um exemplo simples para escrever uma função de retorno de
Eu tenho um método que é cerca de dez linhas de código. Quero criar mais métodos que façam exatamente a mesma coisa, exceto um pequeno cálculo que alterará uma linha de código. Este é um aplicativo perfeito para passar um ponteiro de função para substituir essa linha, mas o Java não possui...
Estou tentando armazenar em um std::tuplenúmero variável de valores, que mais tarde serão usados como argumentos para uma chamada para um ponteiro de função que corresponda aos tipos armazenados. Eu criei um exemplo simplificado mostrando o problema que estou tentando resolver: #include...
Sempre fiquei um pouco perplexo quando leio o código de outras pessoas que tinha typedefs para ponteiros para funções com argumentos. Lembro-me de que demorei um pouco para chegar a essa definição enquanto tentava entender um algoritmo numérico escrito em C há um tempo atrás. Então, você poderia...
Por que o seguinte trabalho? 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)() =...
É possível passar uma função lambda como um ponteiro de função? Nesse caso, devo estar fazendo algo incorretamente porque estou recebendo um erro de compilação. Considere o seguinte exemplo using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private:...
Acabei de ver uma foto hoje e acho que apreciaria explicações. Então, aqui está a imagem: Achei isso confuso e me perguntei se esses códigos são práticos. Pesquisei a imagem no Google e encontrei outra imagem nesta entrada do reddit, e aqui está essa imagem: Então essa "leitura em espiral"...
Existe uma maneira de passar uma função de retorno de chamada em um método Java? O comportamento que estou tentando imitar é um .Net Delegate sendo passado para uma função. Eu já vi pessoas sugerindo a criação de um objeto separado, mas isso parece exagero, no entanto, estou ciente de que, às...
Para uma classe, desejo armazenar alguns ponteiros de função para funções-membro da mesma classe em um objeto de maparmazenamento std::function. Mas eu falhei logo no começo com este código: class Foo { public: void doSomething() {} void bindFunction() { // ERROR
Como devo usar matriz de ponteiros de função em C? Como posso
Encontrei um Ccódigo que imprime de 1 a 1000 sem loops ou condicionais : mas não entendo como funciona. Alguém pode ler o código e explicar cada linha? #include <stdio.h> #include <stdlib.h> void main(int j) { printf("%d\n", j); (&main + (&exit -
Isso pode ser algo comum e trivial, mas parece que estou tendo problemas para encontrar uma resposta concreta. No C #, existe um conceito de delegados, que se relaciona fortemente com a idéia de ponteiros de função do C ++. Existe uma funcionalidade semelhante em Java? Dado que os indicadores estão...
Eu li que converter um ponteiro de função em um ponteiro de dados e vice-versa funciona na maioria das plataformas, mas não é garantido que funcione. Por que esse é o caso? Os dois não deveriam ser simplesmente endereços na memória principal e, portanto, ser
A questão é a seguinte: considere este pedaço de código: #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...
Como obtenho um ponteiro de função para uma função de membro de classe e, posteriormente, chamo essa função de membro com um objeto específico? Eu gostaria de escrever: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark)...
Eu estava brincando com lambdas C ++ e sua conversão implícita em ponteiros de função. Meu exemplo inicial foi usá-los como retorno de chamada para a função ftw. Isso funciona conforme o esperado. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback =...
Gostaria de configurar um ponteiro de função como membro de uma classe que é um ponteiro para outra função na mesma classe. Os motivos pelos quais estou fazendo isso são complicados. Neste exemplo, gostaria que a saída fosse "1" class A { public: int f(); int (*x)(); } int A::f() { return...
Digamos que eu tenha uma função que aceita um void (*)(void*)ponteiro de função para uso como retorno de chamada: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Agora, se eu tiver uma função como esta: void my_callback_function(struct my_struct* arg); Posso fazer isso com...
Eu não consigo descobrir isso: int main() { int (*) (int *) = 5; return 0; } A atribuição acima é compilada com g ++ c ++ 11. Eu sei que int (*) (int *)é um ponteiro para uma função que aceita um (int *)como argumento e retorna um int, mas não entendo como você poderia igualá-lo a 5. No...