Pessoal,
Estou com uma duvida em c++, queria saber se possivel colocar uma função como variavel.
Bem vou explicar melhor o que quero:
Tenho um programa que executa um comando de movimento em um drone, e nele tenho varias funções (direita, esquerda, cima ...), queria fazer uma função que movimentasse o drone, assim eu chamaria a função MoverDrone(), nela iria chamar a movimento que o drone deverar fazer, como direita ou esquerda, porem queria que o programa podesse mudar a direção dinamicamente, sem ter q chamar novamente a função MoverDrone().
Para isto pensei em usar um callback assim a mover drone ia receber a função de movimento, porem seria eu chamar ela novamente toda a vez que o movimento mudasse, então não teria como eu fazer o programa receber essa função de callback como variavel? segue um exemplo do queria:
classConexaoDrone{
public:
explicitConexaoDrone();
voidliga();
voiddesliga();
voiddireita();
voidesquerda();
voidcima();
voidbaixo();
void movimenta();
private:
função; //esta variavel queria q fosse uma chamada para função, ou seja q ela receba qualquer uma das funções acima
Pergunta
vinicius-sako
Pessoal,
Estou com uma duvida em c++, queria saber se possivel colocar uma função como variavel.
Bem vou explicar melhor o que quero:
Tenho um programa que executa um comando de movimento em um drone, e nele tenho varias funções (direita, esquerda, cima ...), queria fazer uma função que movimentasse o drone, assim eu chamaria a função MoverDrone(), nela iria chamar a movimento que o drone deverar fazer, como direita ou esquerda, porem queria que o programa podesse mudar a direção dinamicamente, sem ter q chamar novamente a função MoverDrone().
Para isto pensei em usar um callback assim a mover drone ia receber a função de movimento, porem seria eu chamar ela novamente toda a vez que o movimento mudasse, então não teria como eu fazer o programa receber essa função de callback como variavel? segue um exemplo do queria:
class ConexaoDrone{
public:
explicit ConexaoDrone();
void liga();
void desliga();
void direita();
void esquerda();
void cima();
void baixo();
void movimenta();
private:
função; //esta variavel queria q fosse uma chamada para função, ou seja q ela receba qualquer uma das funções acima
}
void ConexaoDrone::MovimentaDrone(void (*funcao) ())
{
while(1){
funcao();
sleep(20);
}
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.