Dường như tôi đã có một sự hiểu lầm cơ bản về C++: <C++ thay thế cho void * con trỏ (mà không phải là mẫu)
Tôi thích giải pháp chứa đa hình. Cảm ơn bạn SO, vì đã chú ý đến tôi :)
Vì vậy, chúng tôi cần tạo ra một đối tượng kiểu container tương đối chung. Nó cũng xảy ra để đóng gói một số logic liên quan đến kinh doanh. Tuy nhiên, chúng ta cần lưu trữ dữ liệu tùy ý về cơ bản trong vùng chứa này - mọi thứ từ các kiểu dữ liệu nguyên thủy đến các lớp phức tạp.
Do đó, người ta sẽ ngay lập tức chuyển sang ý tưởng về một lớp mẫu và được thực hiện với nó. Tuy nhiên, tôi đã nhận thấy đa hình C++ và các mẫu không chơi tốt với nhau. Là có một số logic phức tạp mà chúng ta sẽ phải làm việc, tôi chỉ muốn gắn bó với một trong hai mẫu HOẶC đa hình, và không cố gắng để chống lại C++ bằng cách làm cho nó làm cả hai.
Cuối cùng, với điều kiện tôi muốn làm cái này hay cái kia, tôi thích sự đa hình hơn. Tôi tìm thấy nó dễ dàng hơn để đại diện cho các ràng buộc như "container này chứa các loại so sánh" - a la java.
Đưa tôi đến chủ đề câu hỏi: Theo trừu tượng nhất, tôi tưởng tượng rằng tôi có thể có giao diện ảo thuần túy "Container" có thứ gì đó giống như "đẩy (void * dữ liệu) và pop (void * data)" (đối với hồ sơ, tôi không thực sự cố gắng để thực hiện một ngăn xếp).
Tuy nhiên, tôi không thực sự thích void * ở cấp cao nhất, chưa kể chữ ký sẽ thay đổi mỗi lần tôi muốn thêm ràng buộc vào loại dữ liệu mà vùng chứa cụ thể có thể làm việc.
Tóm tắt: Chúng tôi có các vùng chứa tương đối phức tạp có nhiều cách khác nhau để truy xuất các phần tử. Chúng tôi muốn có thể thay đổi các ràng buộc trên các yếu tố có thể đi vào các thùng chứa. Các phần tử nên làm việc với nhiều loại vùng chứa (miễn là chúng đáp ứng các ràng buộc của vùng chứa cụ thể đó).
Chỉnh sửa: Tôi cũng nên đề cập rằng các hộp chứa phải được đa hình. Đó là lý do chính của tôi vì không muốn sử dụng templated C++.
Vì vậy - tôi có nên bỏ tình yêu của mình đối với giao diện kiểu Java và đi kèm với mẫu không? Tôi có nên sử dụng void * và tĩnh đúc tất cả mọi thứ? Hoặc tôi nên đi với một định nghĩa lớp trống "Element" tuyên bố không có gì và sử dụng nó như là lớp cấp cao nhất của tôi trong hệ thống phân cấp "Element"?
Một trong những lý do khiến tôi yêu tràn ngăn xếp là nhiều phản hồi cung cấp một số thông tin chi tiết thú vị về các cách tiếp cận khác mà tôi chưa từng cân nhắc. Vì vậy, cảm ơn bạn trước cho thông tin chi tiết và nhận xét của bạn.
ý của bạn là "đa hình và mẫu không chơi tốt với nhau"? –
Cụ thể, một thùng chứa đa hình - Tôi quên đề cập đến yêu cầu đó. Theo như tôi biết, nó không thể được thực hiện .. nhưng sau đó, những gì tôi biết. – Voltaire
> Tôi có nhu cầu về các thùng chứa của mình để được đa hình. Cập nhật câu trả lời của tôi cho phù hợp. – Lev