#include <iostream>
using namespace std;
struct Base {
void fun(int i){}
};
struct Derived : Base {
void fun(){}
};
int main() {
Base base;
Derived derived;
base.fun(10);
derived.fun();
//tego nie chce przepuścić
derived.fun(20);
return 0;
}
Mam kod jak powyżej i nie mogę zrozumieć, dlaczego kompilator nie chce przepuścić derived.fun(20)
. Przecież fun(int)
i fun()
mają inne sygnatury i powinny chyba być traktowane jako zupełnie inne funkcje i wtedy derived.fun(20)
po prostu odwoływałby się do void fun(int i)
z klasy bazowej, skoro nie jest ona zdefiniowana w pochodnej? Jeżeli w klasie pochodnej nie mam zdefiniowanej fun()
, to właśnie tak robi. Byłbym wdzięczny za wyjaśnienia.