dérivé le code suivant Tenir compte:méthode virtuelle provoque une erreur de compilation dans la classe
#include <iostream>
using namespace std;
class A
{
public:
virtual int f() {cout <<"A:: f()\n"; return 1;}
virtual void f(int) {cout <<"A:: f(int)\n";}
virtual void g() {cout <<"A::g()\n";}
};
class B3 : public A
{
public:
void f() {cout <<"B3::f()\n";}
};
int main()
{
return 0;
}
Elle produit l'erreur suivante:
..\main.cpp:17: error: conflicting return type specified for 'virtual void B3::f()'
..\main.cpp:9: error: overriding 'virtual int A::f()'
mais pourquoi? dans le pire des cas, je pense que j'aurais un cas Hiding, mais j'obtenir erreur de compilation concernant virtual int f() {cout <<"A:: f()\n"; return 1;}
remerciements de A, Ronen
Vous n'avez pas besoin d'une liste de paramètres différente pour masquer les fonctions de base. –
@Luchian, oui, vous pouvez également cacher en utilisant constness différent. Est-ce ce que tu avais en tête? Y a-t-il un autre moyen de cacher une fonction virtuelle? – eran