Làm cách nào để kiểm tra thời gian chạy nếu đối tượng thuộc loại ClassA hoặc loại ClassB có nguồn gốc? Trong một trường hợp, tôi phải xử lý cả hai trường hợp riêng lẻKiểm tra loại có nguồn gốc (C++)
ClassA* SomeClass::doSomething (ClassA*)
{
if(/* parameter is of type base class */) {
} else if { /* derived class */) {
}
}
Có thể tôi có thể nói rằng lớp dẫn xuất ClassB có một số khả năng đặc biệt. Nhưng làm cách nào để làm điều đó mà không thay đổi ClassA hiện tại?
ClassA không cần biết bất kỳ điều gì về ClassB. –
Kiểm tra các loại lớp, nói chung, là chỉ báo về thiết kế kém. Xem mô hình thiết kế * Visitor * để thay thế. Ngoài ra nghiên cứu về đa hình. –