Uczę się obsługi wyjątków w C++ i napotykam problem. Oto kod:error: can not dynamic_cast ... (cel nie jest wskaźnikiem ani odniesieniem)
#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;
}
Pomyślałem więc haczyk try funkcja pozwoli na wykonanie i pokaż mi zawartość wyjątku, ale mój kompilator nie kompiluje go. Używam codeblock z GNU GCC. Proszę, pomóżcie mi i pokażcie, co muszę zrobić, aby kod działał tak, jak zamierzałem. wielkie dzięki.
Otrzymujesz błąd kompilatora. Ważne jest, abyś podzielił się tym błędem w swoim pytaniu, abyś mógł nauczyć się je czytać i rozumieć. –
pewnie. "nie może dynamic_cast" a "(typu" klasa A ") do typu" klasa AA "(cel nie jest wskaźnikiem lub odniesieniem) – focusHard
Co jest tutaj głównym problemem,' dynamic_cast' działa na wskaźniku lub typach referencyjnych. 'AA' jest nie jest wskaźnikiem ani typem referencji – Chad