Jest to prawdopodobnie noob pytanie, przepraszam za to. Ostatnio miałem do czynienia z dziwnym problemem, kiedy próbowałem poradzić sobie z rzeczami wysokiego poziomu w C++, przeciążaniem funkcji i dziedziczeniem.C++ problem z przeciążeniem funkcji w odziedziczonej klasie
Pokażę prosty przykład, aby zademonstrować problem;
Istnieją dwie klasy, classA
i classB
, jak poniżej;
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
Zgodnie z tym co wiem classB
powinien posiadać dwa func(..)
funkcje przeciążone z powodu różnych argumentów.
Ale przy próbie tego w głównej metody;
int main(){
int a;
char b[20];
classB objB;
objB.func(a); //this one is fine
objB.func(b); //here's the problem!
return 0;
}
Daje błędów jak metoda void func(char[]){};
która w super klasie classA
nie jest widoczny Int klasy pochodnej, classB
.
Jak mogę to przezwyciężyć? czy tak nie działa przeciążanie w C++? Jestem nowy w C++, ale w Javie, wiem, że mogę użyć czegoś takiego.
Chociaż już znalazłem this thread, który pyta o podobne problemy, myślę, że te dwa przypadki są różne.
Dzięki za odpowiedź + link. Zastanawiam się, czy ludzie C++ celowo to ukrywają. czy są jakieś plusy? wydaje mi się, że to psuje ideę dziedziczenia, prawda? – Anubis
@Anubis, to tylko kwestia zasad dotyczących rozdzielczości przeciążenia i celu generowania deklaracji "using". – chris