我设计的c ++ / CLI库包含许多dll以及opencv的内部用法。 OpenCV矩阵在theese dll之间传递,这是我的问题的起源:
你是如何强制cv :: Mat的行为类似于std :: unique_ptr,std :: shared_ptr和std :: weak_ptr?
据我所知cv :: Mat的行为类似于std :: shared_ptr(带引用计数器),但其他类型的智能指针呢?
答案 0 :(得分:1)
到目前为止最简单的方法是std::unique_ptr<cv::Mat>
。它具有对未来维护者显而易见的额外好处。
这本身就不会阻止他人持有他们自己的cv::Mat
副本来共享所有权。您可以部分阻止:如果可以共享所有权,clone
cv :: Mat before putting it into the
std :: unique_ptr`。但任何人都可以在以后创建额外的cv :: Mat共享所有权。