gpt4 book ai didi

c++ - 未定义对友元运算符的引用

转载 作者:行者123 更新时间:2023-11-28 02:42:46 24 4
gpt4 key购买 nike

在我的代码中,我在 header “Geometry.h”中声明了 2 个类,VectorPoint。在 Point 类中,我有以下内容:

class Point {
// other stuff
friend Vector operator-(const Point& lhs, const Point& rhs);
}

Vector 在“Vector.cpp”中定义,Point 在“Point.cpp”中定义。

我的编译器 (GCC) 提示这个,我不知道为什么:

undefined reference to `Geometry::operator-(Geometry::Point const&, Geometry::Point const&)'|

“Point.cpp”中的函数定义如下:

Vector operator-(const Point& lhs,
const Point& rhs)
{
return Vector(lhs.GetX()-rhs.GetX(),lhs.GetY()-rhs.GetY());
}

最佳答案

正如您在讨论中发现的那样,您应该将您的 operator- 代码放在您的命名空间中:

namespace Geometry
{
...
Vector operator-(const Point& lhs, const Point& rhs)
{
return Vector(lhs.GetX()-rhs.GetX(),lhs.GetY()-rhs.GetY());
}
}

还有另一种方法可以将其放入命名空间:

Vector Geometry::operator-(const Point& lhs, const Point& rhs)
{
return Vector(lhs.GetX()-rhs.GetX(),lhs.GetY()-rhs.GetY());
}

关于c++ - 未定义对友元运算符的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25425783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com