Sto imparando la gestione delle eccezioni in C++ e ho riscontrato un problema. Ecco il codice:: impossibile dynamic_cast ... (la destinazione non è un puntatore o riferimento)
#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;
}
Così ho pensato che il tentativo di cattura consentirà la funzione da eseguire e mi mostra il contenuto della deroga, ma il mio compilatore non compilarlo. Sto usando il codeblock con GNU GCC. Per favore aiutami e mostrami cosa devo fare per far funzionare il codice come volevo. molte grazie.
Si sta verificando un errore del compilatore. È importante per te condividere questo errore nella tua domanda in modo che tu possa imparare a leggerli e comprenderli. –
sicuro. "can not dynamic_cast 'a' (di tipo 'class A') per digitare 'class AA' (target non è puntatore o riferimento) – focusHard
Qual è il problema principale qui.' dynamic_cast' funziona su puntatori o tipi di riferimento. 'AA' è non un puntatore o un tipo di riferimento – Chad