Questa è probabilmente una domanda noob, mi dispiace per quello. Recentemente ho affrontato un problema strano quando ho provato a gettare un po 'di roba di alto livello in C++, sovraccarico di funzioni ed ereditarietà.problema C++ con sovraccarico di funzione in una classe ereditaria
Mostrerò un semplice esempio, solo per dimostrare il problema;
Esistono due classi, classA
e classB
, come di seguito;
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
Secondo quello che so classB
dovrebbero ora possedere due func(..)
funzioni, sovraccariche a causa di diversi argomenti.
Ma quando si prova questo nel metodo principale;
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;
}
Dà errori come il metodo void func(char[]){};
che è nella classe super, classA
, non è visibile int la classe derivata, classB
.
Come posso superare questo? non è così che funziona il sovraccarico in C++? Sono nuovo di C++ ma in Java, so che posso fare uso di qualcosa di simile.
Anche se ho già trovato this thread che chiede informazioni simili, penso che i due casi siano diversi.
Grazie per la risposta + link. Mi chiedo se le persone C++ abbiano mantenuto questa cosa intenzionalmente. ci sono dei professionisti? mi sembra che rovini l'idea dell'eredità, non è vero? – Anubis
@Anubis, È solo una questione di regole per la risoluzione del sovraccarico e lo scopo della dichiarazione 'using' in generale. – chris