访问成员函数时c ++指针错误

Posted

技术标签:

【中文标题】访问成员函数时c ++指针错误【英文标题】:c++ pointer error when accessing a member function 【发布时间】:2014-04-22 15:27:17 【问题描述】:

给定一个classX的向量

vector<classX *> myVec;

还有下面的函数

size_t position_to_index(classY const& p) const
    double dist = 10;
    size_t i(0);
    for (auto const& element : myVec) 
        classY s = element->position();
        double d = distance(s, p);
        if (d < dist) 
            dist = d;
            ++i;
        
    
    return i;

函数距离和位置定义如下:

double distance(classY const& x1, classY const& x2) 
    return sqrt(pow(x1.x() - x2.x(), 2) + pow(x1.y() - x2.y(), 2));


classY position() const 
    return position_;

如果我创建一个主函数来测试 position_to_index,我会得到一堆 25 错误。前三个是:

Error   1   error C2039: 'iterator_category' : is not a member of 'classY'  file: xutility, line 371.
Error   2   error C2146: syntax error : missing ';' before identifier 'iterator_category'   file: xutility, line 371.
Error   3   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   file: xutility, line 371.

您能告诉我问题出在哪里,以及如何解决吗?

【问题讨论】:

错误的行号是什么?显示那条线。您发布的代码中没有 iterator_category 不要发布错误列表,而是查看实际的编译器输出,它通常会有更多信息。 我没有得到问题所在的 cpp 文件的行号。所有错误都指向一些名为 xutility 的 cpp 库文件,如我提到的错误所示。我认为问题出在这一行:classY s = element-&gt;position(); @GambaOsaca “文件:xutility,第 371 行。” 这没有任何意义。您正在声明一个 classX、一个 classY、一个函数、调用一个方法、粘贴与您的类无关的错误消息,然后对其进行编辑以匹配您编写的内容。请粘贴一些真实的代码。 【参考方案1】:

解决方案是我应该在使用之前声明函数distance 或至少它的原型。

【讨论】:

以上是关于访问成员函数时c ++指针错误的主要内容,如果未能解决你的问题,请参考以下文章

当引入参数时,从指针调用成员函数的 C++ 调用内存访问冲突

未定义符号,使用指针 C++ 访问成员函数

为啥我不能访问指向数组中成员函数的指针?

C++面向对象-static、const

C ++ - 通过getter函数在单独的类中从对象指针映射访问成员函数

C++调用静态成员函数指针