Jump to content

Turbine o seu Perfil

Confira a atualização e participe do clube!
Clique e saiba mais

Junte-se ao Clube de Membros VIP

Tenha destaque e diversos benefícios!
Confira Aqui

Acesse nosso Discord

Conheça nossos canais interativos
Confira Aqui
Notícia
  • Adquira já o seu VIP!
Bimetal

Problema com sobrecarga de função

Recommended Posts

Fala galera. Eu estava estudando sobrecarga de função e me deparei com um problema. Eu tentei fazer duas funções de mesmo nome, onde uma soma dois inteiros e outra soma dois numeros decimais. O código é simples pois o intuito era praticar mesmo. Vou deixar abaixo o código e o erro. Quem puder ajudar eu agradeço.

#include <iostream>

int soma(int a, int b);
float soma(float a, float b);

int main()
{
    std::cout << soma(10, 5) << std::endl;
    std::cout << soma(10.741, 5.555) << std::endl;
}

int soma(int a, int b)
{
   return a + b;
}

float soma(float a, float b)
{
    return a + b;
}
 

||=== Build: Debug in Exercícios aleatórios (compiler: GNU GCC Compiler) ===|
In function 'int main()':
error: call of overloaded 'soma(double, double)' is ambiguous
note: candidate: int soma(int, int)
note: candidate: float soma(float, float)
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Share this post


Link to post
Share on other sites

O problema é que números inteiros, podem tanto ser considerados inteiros como pontos flutuantes, logo o compilador não sabe qual das duas funções chamar. Pra resolver isso, basta especificar o ponto flutuante na chamada do " float soma(float a, float b) " colocando "f" no final constantes.
 

Hidden Content

    Give reaction or reply to this topic to see the hidden content.

Note que, se você criar duas variáveis do tipo float, e chamar a função com essas variáveis também vai funcionar pois o compilador vai saber que você tá passando float pra uma, inteiro pra outra.
 

Porém, isso é uma coisa do g++, não notei o mesmo comportamento no msvcpp.

Edited by TheSkytalos
mvcpp para msvcpp
  • Like 1

"May you be in heaven half an hour before the Devil knows you're dead"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...