访问成员函数时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->position();
@GambaOsaca “文件:xutility,第 371 行。”
这没有任何意义。您正在声明一个 classX、一个 classY、一个函数、调用一个方法、粘贴与您的类无关的错误消息,然后对其进行编辑以匹配您编写的内容。请粘贴一些真实的代码。
【参考方案1】:
解决方案是我应该在使用之前声明函数distance
或至少它的原型。
【讨论】:
以上是关于访问成员函数时c ++指针错误的主要内容,如果未能解决你的问题,请参考以下文章
当引入参数时,从指针调用成员函数的 C++ 调用内存访问冲突