std::OpenCV点的向量,没有push_back方法



免责声明:抛出错误是因为touchesY是一个嵌套类的属性,该嵌套类继承自cv::P arallelLoopBody,这是一个const类,本文中未显示。答案中详细介绍了解决方法。

我有这个 cv::P oints3i 的 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/Content/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:687:36: 候选函数不可行:"this"参数的类型为"const std::vector>',但方法未标记为 const /Applications/Xcode.app/Content/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:685:36: 候选函数不可行:"this"参数的类型为"const std::vector>',但方法未标记为 const

我终于发现了错误。正如@NathanOlivier所指出的,这是一个基于上下文的错误。

基本上,我正在定义一个继承自 cv::P arallelLoopBody 的嵌套类,它作为 cv::P oint 的 std::vector 类型的属性,名为 touchesY。由于我继承自 cv::P arallelLoopBody,因此它被定义为 const,这使我无法在其上调用push_back。

通过将属性移动到基类来解决此问题,然后在创建嵌套类时传递对基类的引用,然后我使用它来调用push_back。

非常感谢大家!

您不能将其更改为emplace_back并删除cv::Point3_<int>吗?

相关内容

  • 没有找到相关文章

最新更新