Zugriff auf Basisklasse FN mit derselben Signatur aus abgeleiteten Klassenobjekte
-
18-09-2019 - |
Frage
Ist es möglich, auf eine Basisklassenfunktion zuzugreifen, die mithilfe eines abgeleiteten Klassenobjekts die gleiche Signatur wie eine abgeleitete Klassenfunktion hat. Hier ist ein Beispiel von dem, was ich unten sage.
class base1 {
public:
void test()
{cout<<"base1"<<endl;};
};
class der1 : public base1 {
public:
void test()
{cout<<"der1"<<endl;};
};
int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
Lösung
Sie müssen den Methodennamen vollständig qualifizieren, da er mit dem ererbten Konflikt steht.
Verwenden Sie obj.base1 :: test ()
Andere Tipps
Sie können eine Methode in der abgeleiteten Klasse nicht außer Kraft setzen, wenn Sie kein virtuelles Schlüsselwort angegeben haben.
class base1
{
public:
void test()
{
cout << "base1" << endl;
};
};
class der1 : public base1
{
public:
void test()
{
cout << "der1" << endl;
};
};
int main()
{
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
Der obige Code ist also falsch. Sie müssen geben:
virtual void test();
in Ihrer Basisklasse
Sie können dies verwenden:
((base)obj).test();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow