Điều này có vẻ lạ, nhưng tôi sẽ cố gắng hợp lý hoá nó. Tôi hiện đang sử dụng boost.object_pool rộng rãi cùng với shared_ptr và gần đây tôi gặp phải tình huống mà tôi cần chụp nhanh các trạng thái chương trình hiện tại, để thực hiện chức năng như toàn màn hình phát lại/quay lại/tua nhanh. Vì vậy, tôi không cố gắng sao chép một nhóm đối tượng để sử dụng ở nơi khác, điều đó sẽ không hoạt động rõ ràng bởi vì ngay cả khi tôi được phép làm như vậy bằng giao diện của boost.pool (mà tôi không có), sẽ không có giá trị con trỏ trỏ đến các khối trong hồ bơi mới được nhân bản và nó sẽ là vô nghĩa. Nhưng trường hợp sử dụng của tôi ở đây là tôi muốn "dán" nó trở lại hồ bơi ban đầu nếu có nhu cầu phát lại/quay lại. Tôi chắc chắn chỉ có thể sao chép và sao chép tất cả các tiểu bang, đối tượng và tiểu bang, tiểu đối tượng và subsub ... theo cách thủ công và sau đó đóng gói chúng thành ảnh chụp nhanh và hy vọng mọi thứ sẽ đúng, nhưng đó là lỗi- dễ bị sự phức tạp mà dự án đã có, và nó phải chậm hơn rất nhiều so với nếu tôi chỉ có thể sao chép trực tiếp bộ nhớ. Sử dụng mẫu Command (hoặc tương tự) để đạt được undo-redo là khá ra khỏi câu hỏi là tốt vì cơ chế undo-redo không phải là ý định của tôi.Bất kỳ việc tạo nhóm đối tượng clonable nào trong C hoặc C++?
Tôi đã tự hỏi liệu tôi có thực hiện dự án từ đầu một lần nữa bằng cách sử dụng cách truyền thống C cứng hay không, và một cuộc gọi memcpy đơn giản (snapshot, all_states, size) sẽ thực hiện hầu như tất cả công việc.
Tôi còn thiếu tùy chọn nào khác không? Có boost.object_pool như thực hiện cho phép bạn sao chép khu vực bộ nhớ cơ bản? Là intrusively hack boost.object_pool một lựa chọn hợp lý xem xét tình hình?
Viết hồ bơi đối tượng, có thể sao chép, riêng của bạn với giao diện tương tự dường như không khó khăn hoặc tốn thời gian. – Pubby
@Pubby: cấu trúc giống như đồ thị không bao giờ dễ dàng sao chép. Lỗi phổ biến nhất đang gặp khó khăn trong một chu kỳ vô hạn và vô tình phá vỡ đồ thị. Đó là địa ngục để gỡ lỗi quá. –