Tôi có một dự án xử lý hình ảnh mở rộng dựa trên thư viện OpenCV cho nhiều chức năng của nó, mặc dù tôi cũng sử dụng một vài chức năng tăng cường.OpenCV hoặc Boost con trỏ thông minh
Tôi muốn bắt đầu sử dụng con trỏ thông minh để thay thế một số con trỏ thô đang bắt đầu gây ra sự cố. Câu hỏi của tôi là sử dụng loại con trỏ thông minh nào, với các lựa chọn chính của tôi (tôi nghĩ) là OpenCV cv::Ptr
hoặc một trong các biến thể tăng cường.
Tôi nhận thấy có một number của questions giải thích sự khác nhau giữa mỗi người trong số các con trỏ tăng, nhưng tôi hy vọng ai đó có thể cung cấp một giải thích về cách cv::Ptr
so sánh với họ và thực hiện bất kỳ kiến nghị của một hay khác?
EDIT - Tôi đã nhận thấy từ OpenCV docs rằng Ptr
tương tự như tăng shared_ptr
, là sự khác biệt cần thiết mà chỉ cần thư viện/tệp được yêu cầu?
Bạn đã cân nhắc sử dụng các con trỏ thông minh tiêu chuẩn (nếu bạn có quyền truy cập C++ 11)? – undu
+1 trên 'std :: shared_ptr' nếu bạn đang sử dụng C++ 11. Nếu không, nó thực sự đi xuống cho dù bạn đã sử dụng tăng hoặc đang có kế hoạch để sử dụng tăng, hoặc tương thích với những thứ bằng cách sử dụng tăng. Tôi không nghĩ rằng nó có giá trị bao gồm cả tăng chỉ cho 'shared_ptr', vì' cv :: Ptr' hoạt động tốt. – yiding
Mà bạn sử dụng sẽ phụ thuộc vào các API bạn đang gọi - 3 hương vị của con trỏ thông minh này không nhất thiết phải hoán đổi cho nhau hoặc cung cấp các toán tử chuyển đổi giữa chúng. Vì lý do này, thường có những lý do tốt để sử dụng triển khai 'boost :: shared_ptr' thay vì' std :: shared_ptr' khi sử dụng các phần khác của thư viện tăng. Điều tương tự cũng có khả năng giữ cho OpenCV. – marko