Это, возможно, вопрос о нобе, жаль об этом. Недавно я столкнулся с какой-то странной проблемой, когда пытался объединиться с некоторыми материалами высокого уровня в С++, перегрузкой функций и наследованием.
Я покажу простой пример, просто чтобы продемонстрировать проблему;
Существует два класса: classA
и classB
, как показано ниже:
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
В соответствии с тем, что я знаю, classB
теперь должен иметь две функции func(..)
, перегруженные из-за разных аргументов.
Но при попытке этого в основном методе
int main(){
int a;
char b[20];
classB objB;
objB.func(a); //this one is fine
objB.func(b); //here the problem!
return 0;
}
Он дает ошибки, поскольку метод void func(char[]){};
, который находится в суперклассе, classA
, не отображается int производным классом, classB
.
Как я могу это преодолеть? не так ли, как перегрузка работает в С++? Я новичок в С++, но на Java, я знаю, что могу использовать что-то вроде этого.
Хотя я уже нашел этот поток, который спрашивает об аналогичных проблемах, я думаю, что два случая различны.