如何强制cv :: Mat表现为智能指针

时间:2017-10-06 06:45:44

标签: c++ opencv c++11

我设计的c ++ / CLI库包含许多dll以及opencv的内部用法。 OpenCV矩阵在theese dll之间传递,这是我的问题的起源:

你是如何强制cv :: Mat的行为类似于std :: unique_ptr,std :: shared_ptr和std :: weak_ptr?

据我所知cv :: Mat的行为类似于std :: shared_ptr(带引用计数器),但其他类型的智能指针呢?

1 个答案:

答案 0 :(得分:1)

到目前为止最简单的方法是std::unique_ptr<cv::Mat>。它具有对未来维护者显而易见的额外好处。

这本身就不会阻止他人持有他们自己的cv::Mat副本来共享所有权。您可以部分阻止:如果可以共享所有权,clone cv :: Mat before putting it into the std :: unique_ptr`。但任何人都可以在以后创建额外的cv :: Mat共享所有权。