Giả sử mình định nghĩa class A rồi class B và C kế thừa A, sau đó mình đưa cho người khác phát triển tiếp, vì một lý do nào đó mà người đó không muốn sửa code mình đưa cho họ hay vì lý do "bản quyền" mình không cho người ta đọc hay sửa phần code định nghĩa A,B và C mà chỉ cho họ phát triển tiếp thông qua kế thừa 3 class đó.
Nhưng lúc kế thừa B và C thì lại có lại gặp vấn đề "diamond problem", nó sẽ gây ra lỗi "mơ hồ" vì trong B cũng có thành phần A, trong C cũng có thành phần A, 2 cái này trùng lắp nhau.
Trong c++ để giải quyết "diamond problem" thì mình để B và C kế thừa từ lớp cơ sở ảo A nhưng lúc ban đầu thì mình không dự tính phát triển thêm 1 class kế thừa từ B và C nên không sử dụng "Kế thừa lớp cơ sở ảo"
Zậy có bạn nào có giải pháp cho vấn đề này ko? :funny:
Mình thấy cái phần kế thừa lớp cơ sở ảo phải do phần định nghĩa của D quyết định chứ lúc mình viết class B và C chưa chắc mình đã dự tính viết thêm 1 class kế thừa từ lớp B và C, giờ mún làm vậy phải quay lại sửa phần định nghĩa của B và C... udency:
Nhưng lúc kế thừa B và C thì lại có lại gặp vấn đề "diamond problem", nó sẽ gây ra lỗi "mơ hồ" vì trong B cũng có thành phần A, trong C cũng có thành phần A, 2 cái này trùng lắp nhau.
Trong c++ để giải quyết "diamond problem" thì mình để B và C kế thừa từ lớp cơ sở ảo A nhưng lúc ban đầu thì mình không dự tính phát triển thêm 1 class kế thừa từ B và C nên không sử dụng "Kế thừa lớp cơ sở ảo"
Zậy có bạn nào có giải pháp cho vấn đề này ko? :funny:
Mình thấy cái phần kế thừa lớp cơ sở ảo phải do phần định nghĩa của D quyết định chứ lúc mình viết class B và C chưa chắc mình đã dự tính viết thêm 1 class kế thừa từ lớp B và C, giờ mún làm vậy phải quay lại sửa phần định nghĩa của B và C... udency:
Comment