免责声明:引发该错误是因为touchesY
是从cv :: ParallelLoopBody继承的嵌套类的属性,该嵌套类是const类,在本文中未显示。解决方法在答案中有详细说明。
我有这个cv :: Points3i的std :: vector,但是每当我尝试push_back一个新值时都会收到一个错误,即没有“ push_back方法”。
在头文件中声明:
std::vector<cv::Point3_<int>> touchesY;
调用源文件:
touchesY.push_back(cv::Point3_<int>(i/mask.step[0],0,i-x));
我已经包含了向量库,并且这样做没有错误:
std::vector<int> vec;
vec.push_back(1);
有人可以指出我做错了什么吗?谢谢!
错误是:没有匹配的成员函数可调用'push_back'。
正如@FirstStep所建议的那样,我将代码分解为:
cv::Point3_<int> temp(i/mask.step[0],0,i-x);
touchesY.push_back(temp);
现在,我在第一行出现错误,说:没有匹配的构造函数用于初始化'std::vector<cv::Point3_<int>>'
。
完整的错误消息:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:687:36:候选函数不可行:“此”参数的类型为“ const std :: vector>” ,但方法未标记为const /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:685:36:候选函数不可行:'此'参数的类型为' const std :: vector>',但方法未标记为const
我终于找到了错误。正如@NathanOlivier指出的,这是一个基于上下文的错误。
基本上,我正在定义一个继承自cv :: ParallelLoopBody的嵌套类,该类作为cv :: Point的std :: vector类型的属性,名为touchesY。由于我继承自cv :: ParallelLoopBody,因此将其定义为const,这使我无法对其调用push_back。
我通过将属性移到基类上解决了这个问题,然后在创建嵌套类时将其传递给引用,然后使用该引用对它调用push_back。
非常感谢大家!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句