Ir para conteúdo

POWERED BY:

Arquivado

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

Peixoto

Gabarito sobrecarregado

Recommended Posts

:upset:

 

Segundo um pdf da internt, para você fazer sobrecarga de gabarito é preciso fazer:

 

tipo f (tipo a, tipo B); 
tipo f (tipo a, tipo b, tipo c);

 

O que vai permitir que a sobrecarga possa ser feita, é o fato das duas funções ter número de parâmetros diferentes. Logo se duas funções-gabarito tivessem o mesmo número de parâmetros teriamos erro de compilação.

 

Eu apliquei o conceito no programa abaixo, mas surgiram vários erros:

 

#include <iostream>
#include <cstdlib>
using namespace std;

template <class type1, class type2>
template <class type1, class type2,class type3>

void myfunc (type1 x,type2 y)
{
  cout << x << ' ' << y << '\n';
}


int main()
{
cout << "Mostra os tipos de dado int e char* :" << endl 
<< endl;
   myfunc(10,"h1");
   cout << endl << "Mostra os tipos de dado double e long:" << endl 
<< endl;

   myfunc(0.23,10L);

   system ("pause");
   return 0;
}

 

Erros:

 

Gabarito-fun o-sobrecarregada.cpp:13:11: error: declaration of 'class type1'

Gabarito-fun o-sobrecarregada.cpp:12:11: error: shadows template parm 'class type1'

Gabarito-fun o-sobrecarregada.cpp:13:24: error: declaration of 'class type2'

Gabarito-fun o-sobrecarregada.cpp:12:24: error: shadows template parm 'class type2'

Gabarito-fun o-sobrecarregada.cpp:15:6: error: too many template-parameter-lists

Gabarito-fun o-sobrecarregada.cpp:25:19: error: 'myfunc' was not declared in this scope

 

Verificando os erros e confrontado com a sintae acima para sobrecarga, não estou sabendo eliminar os erros. Poderiam ajudar?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peixoto,

 

Uma pergunta meio besta, mas você realizou a implementação do template??

 

FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

:mellow:

 

Acho que entendi sua pergunta. O erro surgiu depois que inseri a linha

 

template <class type1, class type2,class type3>

 

Se entendi bem, deveria escrever um código diferente para myfunc()(mais um) para ter dois códigos diferentes para mayfunc(). tipo:

 

void myfunc (type1 x,type2 y type z)
{

} 

 

É isso? poderia dar uma sugestão de código? li que função sobrecarregada de gabarito não pode ter o mesmo nome e fazer operaçoes diferentes, tipo: somar numa função e subitrair na outra. Eu não poderia ter uma função chamada calculo() que fizesse soma e subtração. Só poderia haver variação no número de parâmetros.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara,

 

A sobrecarga de função template ou de métodos é exatamente igual. Deve alterar o número o número de parâmetros, pois a assinatura da função deve ser diferente uma da outra.

Foi desta forma que aprendi nos meus estudos.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

:upset:

Tentei fazer:

 

#include <iostream>
#include <cstdlib>
using namespace s
template <class type1, class type2>
template <class type1, class type2,class type3>

void myfunc (type1 x,type2 y)
{
  cout << x << ' ' << y << endl;
}

void myfunc (type1 x,type2 y, type3 z)
{
  cout << x << ' ' << y << ' ' << z << endl;
}
int main()
{
 cout << "Mostra :" << endl <<  endl;
       myfunc(10,"h1");
 cout << "Mostra" << endl << endl;
            myfunc(0.23,10L);
 cout << endl << "Mostra " << endl << endl;
  myfunc(0.23,10L,'A');
  system ("pause");
   return 0;
}

 

Algus Erros:

 

Gabarito-fun o-sobrecarregada.cpp:13:11: error: declaration of 'class type1'

Gabarito-fun o-sobrecarregada.cpp:12:11: error: shadows template parm 'class type1'

Gabarito-fun o-sobrecarregada.cpp:13:24: error: declaration of 'class type2'

Gabarito-fun o-sobrecarregada.cpp:12:24: error: shadows template parm 'class type2'

Gabarito-fun o-sobrecarregada.cpp:15:6: error: too many template-parameter-lists

 

Que está errado

 

Obrigado

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.