成员引用基类型'Point *'不是结构或联合?

时间:2017-10-03 15:53:01

标签: c++

class Point {

public:
    Point() : m_w(1) {}
    Point(uint32_t i, uint32_t j, double_t v) : m_i(i), m_j(j), m_v(v), m_w(1) {}

    double_t m_i;
    double_t m_j;
    double_t m_v;
    double_t m_w;
};

void Cz_Image_Processing::doSomethingWithCameras()
{
    std::vector<double> v;
    std::vector<Point*> v_error;
    Point *error_plane = new Point;
    // for different loop , different error and plane

    file_stream1 << plane << "," << error << std::endl;
    error_plane->m_i = error;
    error_plane->m_j = plane;
    v_error.push_back(error_plane);

    auto min = std::min_element(v_error.begin(), v_error.end(),
        [](const Point *a, const Point *b)
    {
        return (a->m_i < b->m_i);
    });

    std::cout << min->m_i; // error -Member reference base type 'Point *' is not a structure or union?
}

我的问题是 -

我试图找到最小误差以及与之相关的平面 - 但是在尝试这样做时,它显示基于参考的类型不是结构或联合。我已阅读所有相关答案但未找到错误。

1 个答案:

答案 0 :(得分:2)

看起来std::min_element()返回min元素的迭代器。您应该尝试类似:(*min)->m_i