C++ 动态创建自定义对象类型的数组
我正在尝试创建一个Mat对象数组来存储图像,并且在使用静态键入的数字(如10)以外的任何数字时收到警告C++ 动态创建自定义对象类型的数组,c++,arrays,C++,Arrays,我正在尝试创建一个Mat对象数组来存储图像,并且在使用静态键入的数字(如10)以外的任何数字时收到警告 int numberOfRects = boundRect.size(); Mat image_array[numberOfRects]; 当我尝试这段代码时,我在声明非POD元素类型“cv::Mat”的可变长度数组时出错 这段代码也是如此:Mat image_数组[boundRect.size()] 如何根据boundRect的大小创建一个Mats数组?您需要创建一个动态数组。这是语言的一
int numberOfRects = boundRect.size();
Mat image_array[numberOfRects];
当我尝试这段代码时,我在声明非POD元素类型“cv::Mat”的可变长度数组时出错
这段代码也是如此:Mat image_数组[boundRect.size()]代码>
如何根据boundRect的大小创建一个Mats数组?您需要创建一个动态数组。这是语言的一个基本但不简单的方面,所以我建议你先学习一些简单的例子
您可以这样创建它
Mat *image_array = new Mat[numberOfRects];
但必须在完成后将其删除,否则将出现内存泄漏
delete[] image_array;
更好的选择是使用std::vector
,它会自动删除其内容。但是一个类必须是可复制的才能在其中使用,我不知道你的Mat
类允许什么。看起来像
std::vector<Mat> image_array(numberOfRects);
std::vector<std::unique_ptr<Mat>> image_array(numberOfRects);
for (auto& mat : image_array)
{
mat = std::make_unique<Mat>();
}