fbafelipe Postado Abril 11, 2007 Denunciar Share Postado Abril 11, 2007 Ao tentar compilar este código:#include <iostream> class A{ public: virtual ~A(){} inline void foo() const{ std::cout << "Foo\n"; } }; class B : public A{ public: void foo(int x){} }; int main(int argc, char *argv[]){ B b; b.foo(); }O g++ retorna o seguinte erro:teste.cpp: In function ‘int main(int, char**)’:teste.cpp:19: erro: no matching function for call to ‘B::foo()’teste.cpp:14: nota: candidates are: void B::foo(int)alguém sabe o porque deste erro?Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Abril 12, 2007 Denunciar Share Postado Abril 12, 2007 Aqui você encontra uma explicação sobre este caso: http://www.thescripts.com/forum/thread557082.htmlResumindo, o método foo declarado em B esconde o mesmo método declarado em A, e não há sobrecarga no mesmo.Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fbafelipe Postado Abril 12, 2007 Autor Denunciar Share Postado Abril 12, 2007 Obrigado pela ajuda.Caso alguém tenha o mesmo problema, esse é o código funcionando:#include <iostream> class A{ public: virtual ~A(){} inline void foo() const{ std::cout << "Foo\n"; } }; class B : public A{ public: void foo(int x){} using A::foo; }; int main(int argc, char *argv[]){ B b; b.foo(); }Para evitar que o método seja escondido basta adicionar using A::foo;Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
fbafelipe
Ao tentar compilar este código:
O g++ retorna o seguinte erro:
teste.cpp: In function ‘int main(int, char**)’:
teste.cpp:19: erro: no matching function for call to ‘B::foo()’
teste.cpp:14: nota: candidates are: void B::foo(int)
alguém sabe o porque deste erro?
Obrigado
Link para o comentário
Compartilhar em outros sites
2 respostass 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.