Peixoto 0 Denunciar post Postado Julho 29, 2012 :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
GBecker 51 Denunciar post Postado Julho 29, 2012 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
Peixoto 0 Denunciar post Postado Julho 29, 2012 :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
GBecker 51 Denunciar post Postado Julho 30, 2012 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
Peixoto 0 Denunciar post Postado Julho 30, 2012 :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