Ir ao conteúdo
  • Cadastre-se
Visitante

passar uma função como parâmetro c++

Recommended Posts

Visitante
É possível passar uma função como parâmetro? Quero passar a função criarLista() em setLista();
 
tenho o seguinte código em C
HASH *CriarHash(int valor){    HASH *hash = malloc(sizeof(HASH));    hash->lista = Criar_lista();    return hash;}
 
Estou tentando passar pra c++, copiei só as partes mais importantes pra não ficar muito extenso
minha tentativa: 
 
 listahash.cpp
HASH * LISTAHASH::criarHash(int valor){    HASH *hash = new HASH;      hash->setLista(criarLista());    return hash;}
Deu os erros:
 
In member function `HASH* LISTAHASH::criarHash(int)':
`criarLista' undeclared (first use this function)
(Each undeclared identifier is reported only once for each 
 
 
HASH.H
class HASH{       LISTA *lista;     public:    HASH();        void setLista(LISTA *lista);    LISTA * getLista();}
o método criarLista() está em Lista.cpp
LISTA * LISTA::criarLista(){      LISTA *lista = new LISTA;        lista->setPrimeiro(NULL);      lista->setUltimo(NULL);      lista->setTamanho(0);       return (lista);}

sei que é um pouco complicado pra entender o código, mas se alguém puder me dar uma luz, ficarei muito agradecida

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando voce quer ter um ponteiro para uma função como parametro,voce declara a assinatura da função que voce quer pegar como argumento

"void setLista(LISTA * (*pflista)())"

 

fazendo isso voce diz que qualquer função que retorne um ponteiro para o tipo LISTA e que nao tem nenhum parametro pode ser passada para a sua função

quando chamar a função :

 

setLista(&criaLista);

 

dentro da função setLista voce pode chamar a função normalmente usando o ponteiro do argumento

pflista();

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  •    0
    Visitante

    acho que deu tilt no meu cérebro  :looka:  não consegui entender como chamo a função dentro do setLista 

    no momento ela está assim:

    void HASH::setLista(LISTA * (*pflista)()){    lista = pflista;}

    In member function `void HASH::setLista(LISTA*(*)())': 
    cannot convert `LISTA*(*)()' to `LISTA*' in assignment 

    :( 

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  •    0
    Visitante

    quando chamo uma função no main, começou a aparecer esse erro:

     

    http://imgur.com/XeERoat

    será que ta tudo errado?  

    acho que era problema no devc++, porque fechei e abri e resolveu.

     

    agora vai outra dúvida rs,

    tenho a função
     

    void LISTAHASH::Inserir_valor(LISTAHASH *listaHashes, int valor){}

     

    quando eu vou usar o ponteiro listaHashes-> não abre aquela abinha com as funções da classe, e quando executo o programa trava. o que pode estar interferindo? será que é porque esta na própria classe?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    fica difícil saber..podem ser muitas coisas,pode postar a declaração do que voce ta fazendo e onde?voce pode juntar todas as classes  e definir todas as funções em módulo só pra evitar alguns erros bôbos

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Criar uma conta

    Crie uma nova conta em nossa comunidade. É fácil!

    Crie uma nova conta

    Entrar

    Já tem uma conta? Faça o login.

    Entrar agora





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×