Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 动态创建自定义对象类型的数组_C++_Arrays - Fatal编程技术网

C++ 动态创建自定义对象类型的数组

C++ 动态创建自定义对象类型的数组,c++,arrays,C++,Arrays,我正在尝试创建一个Mat对象数组来存储图像,并且在使用静态键入的数字(如10)以外的任何数字时收到警告 int numberOfRects = boundRect.size(); Mat image_array[numberOfRects]; 当我尝试这段代码时,我在声明非POD元素类型“cv::Mat”的可变长度数组时出错 这段代码也是如此:Mat image_数组[boundRect.size()] 如何根据boundRect的大小创建一个Mats数组?您需要创建一个动态数组。这是语言的一

我正在尝试创建一个Mat对象数组来存储图像,并且在使用静态键入的数字(如10)以外的任何数字时收到警告

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>();
}