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

标签 c++ opencv c++11

我正在设计带有许多 dll 和 opencv 内部使用的 c++/CLI 库。 OpenCV 矩阵在这些 dll 之间传递,这是我的问题的来源:

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

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

最佳答案

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

这本身不会阻止其他人自己持有 cv::Mat共享所有权的拷贝。你可以部分地阻止:如果所有权可以共享,clone简历::垫 before putting it into the std::unique_ptr`。但是任何人以后都可以创建其他 cv::Mat 的共享所有权。

关于c++ - 如何强制 cv::Mat 表现为智能指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46599800/

相关文章:

python-3.x - OpenCV-在MAC上以退出代码139(被信号11:SIGSEGV中断)完成的过程

c++ - 为什么 std::sort 不通过引用接受比较器?

c++ - 从另一个类访问全局静态变量

c++ - GLOG 只保存一个文件,第一条消息

c++ - 在不创建抽象类的情况下修复未使用的形式参数警告

image - 由于写访问冲突,在 openv 中使用 SURF 失败

c - 如何从流中获取视频和音频并输出到视频文件和图像

c++ - 计算两个数的超表中的第 N 个数

c++ - "Downcasting"unique_ptr<Base> 到 unique_ptr<Derived>

c++ - 如何使用 GitHub Project MosQtitto 中的 MqttClientSingletonClass?