c++ - C++引用变量

标签 c++ reference compiler-errors

我有这两个函数(使用Point2D和LineVector(具有2个Point2D成员变量)类和预定义的SQUARE宏)

inline float distance(const Point2D &p1,const Point2D &p2) {
    return sqrt(SQUARE(p2.getX()-p1.getX())+SQUARE(p2.getY()-p1.getY()));
}

inline float maxDistance(const LineVector &lv1,const LineVector &lv2) {
    return max(distance(lv1.p1,lv2.p2),distance(lv1.p2,lv2.p1));
}

但它在maxDistance()函数(第238行)中给出了编译错误,内容为:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator_base_types.h: In instantiation of `std::iterator_traits<Point2D>':
quadrilateral.cpp:238:   instantiated from here
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator_base_types.h:129: error: no type named `iterator_category' in `class 
Point2D'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator_base_types.h:130: error: no type named `value_type' in `class Point2D
'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator_base_types.h:131: error: no type named `difference_type' in `class Point2D'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator_base_types.h:132: error: no type named `pointer' in `class Point2D'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_iterator_base_types.h:133: error: no type named `reference' in `class Point2D'

请指出错误是什么?

最佳答案

看起来您可能正在调用std::distance而不是自己的distance函数。有几种原因可能导致这种情况发生,但这通常是由于免费使用

using namespace std;

调用distance函数或它在全局 namespace 中时,尝试显式使用 namespace 或类名称
float result = ::distance(point1, point2);

关于c++ - C++引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2696637/

相关文章:

c++ - 为什么迭代时不能使用模板

c++ - 适用于 Linux 的免费并行 (MPI) 调试器?

c++ - 编译用户定义的类时出现编译器错误

c++ - 使用引用指向节点的指针的函数删除链表中的节点?

objective-c - cocoa 奥特莱斯表现得很奇怪,无法识别选择器

C 常量抛出编译时错误

java - 为什么 Java 中的加号运算符总是产生 Integer?

c++ - 当 C++ 中的参数是父类类型时,如何调用子类的方法?

c++ - : mean? 是什么意思

C++为具有引用成员变量的类创建复制构造函数