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?
}
我的问题是 -
我试图找到最小误差以及与之相关的平面 - 但是在尝试这样做时,它显示基于参考的类型不是结构或联合。我已阅读所有相关答案但未找到错误。
答案 0 :(得分:2)
看起来std::min_element()
返回min元素的迭代器。您应该尝试类似:(*min)->m_i
。