我目前正在使用Xcode 7.2中的Opencv 3.0 C ++。我写了代码错误
Variable length array of non-POD element type cv::Mat
示例代码定义如下
Mat symbol[opts.numofblocksX*opts.numofblocksY];
我已将代码更改为
Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];
并显示另一个错误
cv::Mat doest not provide a subscript operator
以前是否有人面临同样的问题?我可以在这里实施什么解决方案?
由于
答案 0 :(得分:0)
此代码:
cv::Mat symbol[opts.numofblocksX*opts.numofblocksY];
定义大小为Mat
的{{1}}数组。
你得到的错误是因为这个数组的大小在编译时没有固定,而且不是POD type。
您的新代码存在缺陷。
opts.numofblocksX*opts.numofblocksY
这定义了一个cv::Mat symbol = symbol[opts.numofblocksX * opts.numofblocksY];
被调用的符号,然后无意义地尝试用Mat
作为参数调用operator []。这不是声明一个数组。
有两个明显的选择:
在允许变量大小分配的heap上分配您的数组。别忘了opts.numofblocksX * opts.numofblocksY
以后! (或使用智能指针)
delete[]
使用std :: vector(推荐):
cv::Mat *symbol = new cv::Mat[opts.numofblocksX * opts.numofblocksY];