Chuyển dữ liệu từ struct sang object

Em đang chuyển 1 chương trình từ C sang C++, các struct data với nhiều kiểu dữ liệu có các con trỏ hàm set/get dữ liệu, mỗi struct data lại dùng các hàm set/get dữ liệu khác nhau(do khác kiểu dữ liệu).
Khi chuyển sang C++ em định chuyển chúng thành các đối tượng kế thừa từ 1 lớp chung data, tất cả phần tử sẽ là kiểu string, với phương thức set/get dữ liệu giống nhau,ở các lớp con sẽ có mảng khai báo kiểu dữ liệu của từng phần tử, như vậy vấn đề gộp các phương thức set/get dữ liệu thành 1 sẽ được giải quyết. Có 1 vấn đề xảy ra là khi đọc dữ liệu từ file:

  • Nếu muốn convert dữ liệu từ string thành các kiểu dữ liệu đúng ngay từ đầu thì cần phải tạo ra các struct khác nhau để đổ dữ liệu vào, cách này thì code dài và không dynamic nhưng hiệu suất nhanh.
  • Nếu khi nào cần dùng đến thì mới convert kiểu dữ liệu thì sẽ dynamic nhưng hiệu suất sẽ bị giảm.
    Có cách nào vừa dynamic vừa đảm bảo hiệu suất không ạ?

đừng kế thừa lung tung :unamused:

em có để chung các loại data khác nhau đó vào 1 mảng ko? Nếu ko thì đừng kế thừa.

2 Likes

Đây là bài toán thường hay gặp và cũng phổ biến trong C++
Nếu các kiểu dữ liệu có ít nhất 1 thuộc tính chung thì tạo 1 base class cho chúng khi kế thừa cùng 1 base class rồi thì việc casting , giữa các kiểu rất dễ dàng.
Còn không thì dùng void* xong cast qua cast lại
Truyền vào nếu chưa biết nó là gì cứ dùng BASE, nhưng khi handle ở hàm thực sự khi biết chắc dữ liệu sẽ là gì rồi thì cast nó lại Object thực sự mà thao tác. Để ý một chút memory layout và aligment nếu truyền qua Network.

1 Like

việc cast thì dễ nhưng bị reject vì gây giảm hiệu suất ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?