2010-08-07 35 views

Trả lời

8

Vùng chứa boost::ptr_vector có thông số mẫu tùy chọn, CloneAllocator, xác định chính sách nhân bản. Trình phân bổ mặc định là heap_clone_allocator, chỉ đơn giản gọi hàm tạo bản sao để sao chép một đối tượng.

Trình phân bổ bản sao được sử dụng như một cách để thêm một lớp hướng dẫn xung quanh nhân bản. Ví dụ, nó cho phép bạn cung cấp một cấp phát tùy chỉnh xử lý chính xác nhân bản của một loại không thể sao chép được.

Bạn có thể tìm thêm thông tin trong the Boost Pointer Containers Library documentation, giải thích các khái niệm Clonable và Clone Allocator.

+0

Ah - vì vậy tôi cần hỗ trợ khái niệm clonable ngay cả khi đối tượng của tôi có thể sao chép được? Các tài liệu dường như chỉ đề cập đến clonable khi đối tượng không phải là. –

+0

@Billy: Đó là sự hiểu biết của tôi về nó. Tôi đã không sử dụng 'ptr_vector' rộng rãi, nhưng đó là cách các container con trỏ khác mà tôi đã sử dụng xử lý nhân bản. –

+0

@Billy: Bạn cũng có thể sử dụng 'view_clone_allocator' thay vì' heap_clone_allocator' để nhận được yêu cầu xung quanh. Sau đó không cần quá tải cho 'new_clone()'. Rõ ràng là bạn không thể sao chép sâu các thùng chứa. –

Các vấn đề liên quan