Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raficcha

[Resolvido] Callbacks em c++

Recommended Posts

Olá pessoal, sou programador delphi a algum tempo ja. Em delphi (e em javasccript tambeim) utilizo funções de callbacks, principalmente para criar objetos.

 

Em c++ estou ainda iniciando e gostaria de saber como fazer funções de callback. Preciso para criar meu objetos e conseguir mais flexibilidade dentro da linguagem.

 

Então, como crio funções de callbacks em c++?

 

obrigado pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Raficcha!

 

Quando programamos em C utilizamos MUITO os ponteiros.

Em C++ é um pouco diferente, por causa da STL, mas os ponteiros são igualmente importantes!

Callbacks são feitos com ponteiros para funções.

 

Aconselho a você dar uma boa estudada em ponteiros, depois ponteiros para funções.

Mas escrevi um exemplo rápido:

#include <iostream>

using namespace std;

bool Compare(int a, int b, char op)
{
    switch (op)
    {
        case '<': return a < b;
        case '>': return a > b;
    }
}

void bubbleSort(int *arr, int size, bool (*cmp)(int, int, char))
{
bool change = true;

    while (change)
    {
        change = false;
        for (int i = 0; i < size-1; i++)
        {
            //Vamos chamar a função passada como parametro.
            if ((cmp)(arr[i], arr[i+1], '>'))
            {
            int tmp = arr[i];
            
                arr[i] = arr[i+1];
                arr[i+1] = tmp;
                
                change = true;
                break;
             }
        }
    }
}

int main()
{
int myInts[] = {13, 243, 1, 53, 123, 3, 54, 64, 2324, 64 ,453, 23};

    bubbleSort(myInts, 12, &Compare);
    
    for (int i=0; i<12; i++)
        cout << myInts[i] << "; ";
        
    cout << endl;   
    return 0;
}

ATENÇÃO: É aconselhável o uso de um std::vector, não um int*. Mas para descomplicar usei int*. :P

 

Não sei o seu nível... isto é, não sei o que você ja sabe acerca da linguagem.

Mas se buscas flexibilidade, use templates!

por exemplo, complicando um pouco o exemplo anterior, temos: http://codepad.org/1ZImahHt

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, extamente isso que eu precisa. Testei aqui, ja testei com outras funções funcionaram..

 

agora é so marcar o topico como [resolvido].

 

hehe callbacks = ponteiros para funções.. so não sabia como fazer em c++

 

VictorCacciari, muito obrigado cara.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe.. valeus, hehe..logo volto com outras duvidas e ajudas tambeim.. hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.