Ich lerne Ausnahmebehandlung in C++ und lief auf ein Problem. Hier ist der Code:Fehler: kann nicht dynamic_cast ... (Ziel ist nicht Zeiger oder Verweis)
#include<iostream>
#include<exception>
using namespace std;
class A
{
public:
virtual void f(void){}
};
class AA:public A
{
public:
void aa(void){};
};
int main(void)
{
A a;
try
{
dynamic_cast<AA>(a).aa();
}
catch(exception ex)
{
cout<<"["<<ex.what()<<"]"<<endl;
}
return 0;
}
Also dachte ich, die versuchen, fangen die Funktion ermöglicht die Ausführung und zeigen Sie mir den Inhalt der Ausnahme, aber mein Compiler es nicht kompilieren. Ich verwende Codeblock mit GNU GCC. Bitte helfen Sie mir und zeigen Sie mir, was ich tun muss, damit der Code wie gewünscht ausgeführt wird. Danke vielmals.
Sie erhalten einen Compilerfehler. Es ist wichtig, dass Sie diesen Fehler in Ihrer Frage teilen, damit Sie sie lesen und verstehen lernen können. –
sicher. "kann nicht dynamic_cast 'a' (vom Typ 'Klasse A'), um 'Klasse AA' (Ziel ist nicht Zeiger oder Referenz) – focusHard
Das ist das Hauptproblem hier.' dynamic_cast' funktioniert auf Zeiger oder Referenztypen. 'AA' ist kein Zeiger oder Referenztyp – Chad