【发布时间】:2016-07-15 13:50:49
【问题描述】:
免责声明:引发错误是因为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: 候选函数不可行:“this”参数的类型为“const” std::vector >',但方法未标记为 const /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/vector:685:36: 候选函数不可行:“this”参数的类型为“const” std::vector >',但方法未标记为 const
【问题讨论】:
-
请复制实际错误。
-
尝试分解它。如果你这样写会发生什么:
cv::Point3_<int> temp(i/mas.step[0],0,i-x); touchesY.push_back(temp);哪个部分会弹出错误? -
对不起,我应该提供这些信息。现在添加了!谢谢!
-
如果这是整个编译器错误消息,那么您需要一个新的编译器。如果不是,请发布完整的错误消息。
-
您的错误消息提到了
this。看来您是在类成员函数中使用它。如果是这种情况,我们需要看到您在const成员函数中。请创建一个minimal reproducible example 并确保您给我们的错误是来自minimal reproducible example 的确切错误输出