về mặt ngôn ngữ, tất cả các loại C++ hiện nay đều không có khái niệm reflection
Về mặt trình dịch, VC đã có gắng mang vào một chút sự hỗ trợ cho reflection, nhưng sự hỗ trợ của VC không mạnh. Bạn tham khảo từ khóa typeid trong VC
Tuy nhiên bạn hoàn toàn có thể xây dựng nên một hệ thống thư viện hỗ trợ được reflection, nhưng sẽ không thể hoàn hảo như Java hoặc C#, vì chúng được trình dịch hỗ trợ mà
1 cách chung chung để xây dựng 1 hệ thống như vậy thì bạn cần làm:
- hệ thống lớp thừa kế lẫn nhau, tất cả đều là object, có 1 interface chung nhất cho tất cả các lớp, bắt chước java xây dựng class object, sau đó xây dựng tất cả các lớp thừa kế trên nó
- các lớp có phương thức getClassName trả ra tên của lớp của nó, có thể có thêm phương thức getParentClassName
- Mỗi lớp nên có phương thức getInstance thay thế cho constructor (bắt chước theo singleton patern)
- Có thể tạo ra một lớp adapter, các lớp khác đăng ký vào adapter, adapter sẽ quản lý tạo instance cho các lớp khác
- Cần phải xây dựng một loạt các lớp bao lên build-in type tương tự java hay C#
Với constructor thì có vẻ dễ xử lý, tiếp đến việc gọi các hàm khác của các lớp sẽ gặp rất nhiều khó khăn, muốn gọi được cần phải đăng ký tưng hàm vào adapter, nói chung là khá phức tạp
lợi ích sẽ rất lớn nếu bạn xây dựng được hệ thống lớp như vậy: bạn có thể dễ dàng viết lại class LinkedList không cần theo template nữa, mà sẽ là generic class tức là chấp nhận tất cả các kiểu của phần tử đưa vào, hoặc tối ưu trong việc quản lý bộ nhớ