考虑以下类:
class Coord
{
public:
double _x, _y;
Coord(double x, double y)
{
_x = x;
_y = y;
}
};
class NamedPoint : public Coord
{
public:
int _id;
NamedPoint(int id, double x, double y) :
Coord(x,y),
_id(id)
{
}
};
我想创建一个 NamedPoint 的成员函数——coord()——它返回对应于 NamedPoint 的 Coord 类型的引用。
例如,我想要类似的东西:
const Coord& NamedPoint::coord()
{
return ((Coord)*this);
}
但是我收到有关临时变量的警告,我对此并不感到疯狂。
当然,以下工作:
Coord coord()
{
Coord c = *this;
return c;
}
但我宁愿返回一个参考。
有谁知道这是否可以使用继承的类?
很抱歉没有解释函数的重点。我为 Coord 和 NamedPoint 重载了 == 运算符。Coord 会简单地检查 {x,y} 而 NamedPoint 会检查 {id,x,y}。如果我忘记在此 == 测试之前将 NamedPoint 转换为 Coord,我将使用错误的版本。
所以,虽然我意识到
(Coord)np1 == (Coord)np2
会给我我想要的,我宁愿使用类似的东西
np1.coord() == np2.coord()
我认为更清楚的是发生了什么。