Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Hướng dẫn mình xây dựng cơ chế reflection trong C++,please!!!

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    50

    Mặc định Hướng dẫn mình xây dựng cơ chế reflection trong C++,please!!!

    Bạn nào biết cho mình ý tưởng để làm bài này đi,Giả sử mình có vài trăm lớp,trong mỗi lớp đều có hàm tạo rồi, mình muốn viết một hàm mà khi truyền tên lớp vào hàm đó thì nó sẻ tự động tìm đến lớp đó để khởi tạo cho nó,hàm này xem như mình cung cấp thêm cho người lập trình(xem như mình là người cung cấp thư viện),làm sao đây!!!!!!!!!!,nếu bí quá mình có thể yêu cầu người sử dụng thư viện của mình cần thêm phường thức chuyển tên của mỗi lớp vào một mảng phụ nào đó để sau này tiện cho hàm refection dò tìm được không(như thế thì không hay vì mình dang viết thư viện cho người khác dung mà),nói chung bạn nào có ý tưởng gì thì post lên cho mình tham khảo nha

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    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ớ
    Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 16-10-2007 lúc 09:21 AM.

  3. #3
    Ngày gia nhập
    05 2007
    Nơi ở
    HCMC
    Bài viết
    60

    Cơ chế Reflection có sẵn trong Java, C#, nhưng C/C++ thì không. Tuy nhiên, bạn có thể dùng thư viện Seal Relex để cài đặt (Hiện tại, Seal Relex chỉ hỗ trợ flatform VC++ 7.1 trở lên). Ví dụ và tài liệu bạn có thể tìm thấy tại link bên dưới:
    http://seal-reflex.web.cern.ch/seal-reflex/index.html
    Nếu vẫn... chưa đủ, bạn có thể liên hệ qua email để lấy thêm.

  4. #4
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Hoặc lên CodeProject, search với keyword "Reflection" và C++.
    À mà quên, chưa đọc kỹ yêu cầu, cái này không cần dùng Reflection, dùng C++ RTTI (Runtime Time Information) cũng được.


    Xem đề tài này xem sao:
    http://www.codeproject.com/library/vcf_rtti.asp
    Posted by Dreamiess at 9:47 GMT+7, 17/10/2007
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 17-10-2007 lúc 09:50 AM. Lý do: Thêm link tham khảo

Các đề tài tương tự

  1. Lỗi gì System.Reflection.ReflectionTypeLoadException khi chạy chương trình trên máy khác?
    Gửi bởi soravn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 26-11-2012, 04:10 PM
  2. Kĩ thuật Reflection trong lập trình C# với .Net
    Gửi bởi Yin Yang trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 19-07-2012, 11:51 AM
  3. Sử dụng reflection trong factory pattern như thế nào?
    Gửi bởi NostraNam trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 01-03-2012, 05:14 PM
  4. Trong Objective C có Abstract class và Reflection hay không ?
    Gửi bởi ngocsonaat trong diễn đàn Thắc mắc lập trình Objective-C
    Trả lời: 14
    Bài viết cuối: 27-09-2011, 10:04 PM
  5. cho mình hỏi ve reflection.
    Gửi bởi tuandat trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 28-12-2007, 03:36 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn