无法转换' const T *'到'&&'

时间:2015-11-12 09:06:37

标签: c++ c++11

我在尝试将对象引用添加到指针向量时遇到错误:

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;

1 个答案:

答案 0 :(得分:4)

您将pnt捕获为const auto&,但是您尝试将其推送到包含非常量指针的向量中。这违反了正确性。

如果您不想修改这些指针对象,请将also_inliers更改为std::vector<const Tpoint*>,如果需要修改,则按auto&进行捕获。