我在尝试将对象引用添加到指针向量时遇到错误:
template <class Tpoint, class Tmodel> Tmodel ransac<Tpoint, Tmodel>::perform_fitting(const std::vector<Tpoint>& data){
std::vector<Tpoint*> also_inliers;
for (const auto& pnt : data){
if (fit_point(pnt, may_be_model) <= t){
also_inliers.push_back(&pnt); //error here
}
} // ! for range
}
来自VS.NET 2013的错误消息:
错误88错误C2664:&#39; void std :: vector&gt; :: push_back(cv :: Point_ * const&amp;)&#39; :无法从&#39; const cv :: Point_ *&#39;转换参数1至 &#39; cv :: Point_ *&amp;&amp;&#39;
答案 0 :(得分:4)
您将pnt
捕获为const auto&
,但是您尝试将其推送到包含非常量指针的向量中。这违反了正确性。
如果您不想修改这些指针对象,请将also_inliers
更改为std::vector<const Tpoint*>
,如果需要修改,则按auto&
进行捕获。