Tôi đang học xử lý ngoại lệ trong C++ và gặp sự cố. Đây là mã:lỗi: không thể dynamic_cast ... (mục tiêu không phải là con trỏ hoặc tham chiếu)
#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;
}
Vì vậy, tôi nghĩ thử bắt đầu sẽ cho phép hàm thực thi và hiển thị cho tôi nội dung ngoại lệ, nhưng trình biên dịch của tôi không biên dịch nó. Tôi đang sử dụng codeblock với GNU GCC. Xin hãy giúp tôi và chỉ cho tôi những gì tôi cần làm để có được mã chạy như tôi dự định. cảm ơn rất nhiều.
Bạn đang gặp phải lỗi trình biên dịch. Điều quan trọng là bạn phải chia sẻ lỗi đó trong câu hỏi của mình để bạn có thể tìm hiểu cách đọc và hiểu chúng. –
chắc chắn. "không thể dynamic_cast 'a' (thuộc loại 'lớp A') để nhập 'lớp AA' (đích không phải là con trỏ hoặc tham chiếu) – focusHard
Vấn đề chính ở đây là' dynamic_cast' hoạt động trên con trỏ hoặc kiểu tham chiếu. Không phải là con trỏ hay kiểu tham chiếu – Chad