Có ai biết về việc triển khai shared_ptr
và weak_ptr
cùng với một đối tác khởi tạo lười biếng không? Các yêu cầu của lớp học là:các con trỏ được chia sẻ, yếu và lười biếng trong C++
Một lớp
lazy_ptr
cho phép một khách hàng để xây dựng các đối tượng sau (nếu có), mà không cần phải thực hiện constructorMột lớp
weak_lazy_ptr
rằng có ba trạng thái có thể : chưa xây dựng (sẽ không khóa để mộtshared_ptr
), xây dựng (sẽ khóa cho mộtshared_ptr
) và phá hủy (sẽ không khóa để mộtshared_ptr
)
tôi đã tạo một số lớp không hoàn thành công việc một thời gian trước đây (see CVu article here) đã sử dụng shared_ptr
và weak_ptr
khi triển khai. Những vấn đề chính với một mô hình có sử dụng con trỏ được chia sẻ và yếu thay vì tích hợp với họ theo:
Khi tất cả
lazy_ptr
đối tượng đi ra khỏi phạm vi, bất kỳ tài liệu tham khảo yếu không còn có thể bị khóa, thậm chí nếu khách hàng khác đang giữshared_ptr
phiên bảnxây dựng của các đối tượng trên chủ đề khác nhau không thể được kiểm soát
tôi đánh giá cao bất cứ gợi ý để những nỗ lực khác để hòa giải những vấn đề này, hoặc cho bất kỳ công việc i n tiến bộ có thể có trong lĩnh vực này.
Nó gần giống như 'shared_ptr>', có đúng không? –
GManNickG
@ user1078210 Có lẽ bạn có thể tìm thêm thông tin [tại đây] (http: // stackoverflow.com/questions/878166/is-there-c-lazy-pointer). – ealves
@GMan: 'boost :: optional' * không * cho phép xây dựng hoãn lại, nhưng' boost :: shared_ptr' cho phép điều đó, vì vậy cả hai đều không cần thiết, nếu tôi hiểu bạn. –