Ir ao conteúdo
  • Cadastre-se

C++ Como criar uma função C++ com dois tipos de parametros diferente?


Posts recomendados

Olá pessoal, sou novo em c++ preciso de ajuda.

Preciso criar uma função que tenha dois parametros diferente um do outro, estilo a formula se() do excel. Onde se consegue usar qualquer tipo de dados juntos nos paremtros e no retorno.

<

#include <iostream>

using namespace std;

 double teste (double a, double b, char c, char d){
     return (a > b )? c : d;
 }

 int main(){

     cout << teste(1,2,'x','y') << endl;

     return 0;
 }

>

o codigo roda normal, mas em vez de imprimir as letras ele imprime numeros.

Já tentei fazer função template e da o mesmo erro.

<

#include <iostream>

using namespace std;

template < typename N>
N funcao(N a, int b, char c, char d)
{
    N result = (a<b)? c : d;
    return (result) ;
}
int main(){

cout << funcao(1,2,'x','y' )  << endl;

return 0;
}

>

Desde já agradeço quem puder ajudar ou tentar ajuda.

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@Carlos Vilas boas     você pode colocar a função com o tipo char , e tudo irá bem ,

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
char teste(double a, double b, char c, char d)// tipo char retrna tipo char
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,'x','y') << endl;
    return 0;
}

e esse símBolo    < >    foi Legal .

e você postou no tópico de c++ , mas esse seu código está todo em linguagem c , apenas o cout <<  é da linguagem c++ , que poderia ser assim  :

#include <iostream>
#include <iomanip>
#include <vector>
#include <string.h>
#include <cstring>
#include <string>
using namespace std;
string teste(double a, double b, string c, string d)// tipo string retrna tipo string
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,"x","y") << endl;
    return 0;
}

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

@devair1010 Muito obrigado man, o codigo rodo certinho. Estava a uma semana tentando fazer esse codigo rodar para criar uma dll no vba do excel, agora outra lutra para rodar ele na vba como dll . Esse codigo é generico em cima dele vou criar outros mais complexo. Ainda estou aprendendo c++, então, não sei muito a diferença entre c e c++ na forma de escrever o codigo, com tempo pego o jeito. Valeu e um grande abraço.

4 horas atrás, devair1010 disse:

@Carlos Vilas boas     você pode colocar a função com o tipo char , e tudo irá bem ,






#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
char teste(double a, double b, char c, char d)// tipo char retrna tipo char
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,'x','y') << endl;
    return 0;
}

e esse símBolo    < >    foi Legal .

e você postou no tópico de c++ , mas esse seu código está todo em linguagem c , apenas o cout <<  é da linguagem c++ , que poderia ser assim  :






#include <iostream>
#include <iomanip>
#include <vector>
#include <string.h>
#include <cstring>
#include <string>
using namespace std;
string teste(double a, double b, string c, string d)// tipo string retrna tipo string
{
    return a > b ? c : d; // ? ternário true faz o primeiro false faz o segundo
}
int main()
{
    cout << "Valor retornado -> " << teste(1,2,"x","y") << endl;
    return 0;
}

 

 

Link para o comentário
Compartilhar em outros sites

8 horas atrás, Carlos Vilas boas disse:
2 horas atrás, Carlos Vilas boas disse:

a diferença entre c e c++ na forma de escrever o codigo

Preciso criar uma função que tenha dois parametros diferente um do outro, estilo a formula se() do excel. Onde se consegue usar qualquer tipo de dados juntos nos paremtros e no retorno

 

Não entendi o que precisa fazer. 

 

Em C++ pode simplesmente declarar as funções com o mesmo nome e a lista de parâmetros de que precise. Isso se chama overload e não está disponível em C, embora possa ser conseguido usando void*.

 

O compilador C++ escolhe a versão correta a partir dos parâmetros.

 

templates em C++ vão gerar as funções em tempo de compilação com os parâmetros adequados e pode ser outra opção.

 

C e C++ são linguagens bem diferentes. Muito diferentes. No entanto quase tudo de C compila ok em C++. Só isso. C tem 60 anos, C++ tem 50, e continuam evoluindo.

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...