我在C# 里调C++,在C++中对*ptr 赋值出现了问题。显示引发了异常: 写入访问权限冲突。 this 是 nullptr。
异常在C++语句的(*ptr).push_back(points)。
以下是C#中的代码:
public void GetContours()
{
ThrowIfDisposed();
VectorOfVectorPoint ret = new VectorOfVectorPoint();
NativeMethods.region_getContours(ptr, ret.CvPtr);
var val = ret.ToArray();
}
以下是C++的代码:
HRESULT region_getContours(Region* self,std::vector<std::vector<cv::Point2f>>* ptr)
{
HRESULT hr = S_OK;
if(self==NULL)
hr = E_INVALIDARG;
if (SUCCEEDED(hr))
{
size_t num = self->contours.size();
for (size_t i = 0; i < num; i++)
{
std::vector< cv::Point2f > points;
points.assign(self->contours[i].begin(), self->contours[i].end());
(*ptr).push_back(points);
}
}
return hr;
}