Il mio codice C++
è il seguente:Posso eseguire l'override di un solo metodo in ereditarietà?
#include<iostream>
using namespace std;
class A
{
public:
virtual void f(int i)
{
cout << "A's f(int)!" << endl;
}
void f(int i, int j)
{
cout << "A's f(int, int)!" << endl;
}
};
class B : public A
{
public:
virtual void f(int i)
{
cout << "B's f(int)!" << endl;
}
};
int main()
{
B b;
b.f(1,2);
return 0;
}
durante la compilazione ottengo:
g++ -std=c++11 file.cpp
file.cpp: In function ‘int main()’:
file.cpp:29:9: error: no matching function for call to ‘B::f(int, int)’
file.cpp:29:9: note: candidate is:
file.cpp:20:16: note: virtual void B::f(int)
file.cpp:20:16: note: candidate expects 1 argument, 2 provided
Quando ho provato ad usare esclusione dopo f di B (int), ho ottenuto lo stesso errore.
E 'possibile in C++ sovrascrivere solo 1 metodo? Ho cercato un esempio di codice usando override
che verrà compilato sulla mia macchina e non ne ho ancora trovato uno.
possibile duplicato di [metodo virtuale causa errore di compilazione nella classe derivata] (http://stackoverflow.com/questions/7274723/virtual-method-causes-compilation-error-in-derived-class) –
No, mi dispiace, quello era un altro problema. –
possibile duplicato di [C++: logica dietro la regola nascosta] (http://stackoverflow.com/questions/4837399/c-rationale-behind-hiding-rule) – Angew