【发布时间】:2013-06-19 14:11:06
【问题描述】:
我用过OpenCv,我用的代码类似于下面的代码:
Mat Create()
{
Mat myMat(10, 10, CV8U_C1);
int x=myMat.Rows; // I am accessing Mat like an object not a pointer.
Return myMat;
}
Main()
{
Mat aMat=Create(); // created inside this function
int x=aMat.Rows; // accessing it using . notation
// do some work
return; //I did not delete Mat, as it would release its memory.
}
如何在我的 c++ 代码中创建类似的对象?
我正在使用 STL,但如果需要,我也可以使用 Boost。
【问题讨论】:
-
aMat仍将被销毁。 (RAII成语) -
@Magtheridon96 谢谢我知道。我的问题是 Mat 是如何定义的?它是一个shared_pointer吗?当我使用 . ,它不能是指针。那是什么?
-
@mans 这只是一个普通的课程。像这样:
class Mat { }; -
@H2CO3 所以当我将它从一个函数传递到另一个函数时,它会被复制过来吗?那将是非常低效的,opencv 应该非常慢。
-
@JBL 那是什么?普通班?
标签: c++ opencv boost stl smart-pointers