实现hexdirections列表时。我收到了一些错误,其中包含"使用已删除的功能...'。实现删除的功能后
HexPolygon& HexPolygon::operator =(const HexPolygon&);
我收到此错误:
extra qualification 'HexPolygon::' on member 'operator=' [-fpermissive]
HexPolygon& HexPolygon::operator =(const HexPolygon&);
嗯,我不明白这个错误,它让我四处走动。有人能帮助我吗?
cpp文件:
QList<HexPolygon> HexDirections =
{
//[0]NorthEast //[1] East //[2]SouthEast
HexPolygon(1, 0, -1), HexPolygon(1, -1, 0), HexPolygon(0, -1, 1),
//[3]SouthWest //[4]West //[5]NorthWest
HexPolygon(-1, 0, 1), HexPolygon(-1, 1, 0), HexPolygon(0, 1, -1)
};
HexPolygon::HexPolygon(int _x, int _y, int _z) :
cordX(_x), cordY(_y), cordZ(_z)
{
hexPoints << QPointF(1,0)
<< QPointF(1.5,0.25)
<< QPointF(1.5,0.75)
<< QPointF(1,1)
<< QPointF(0.5,0.75)
<< QPointF(0.5,0.25);
}
HexPolygon::HexPolygon(HexPolygon &&)
{
}
HexPolygon::HexPolygon(const HexPolygon &)
{
}
头文件:
class HexPolygon : public QObject, public QGraphicsPolygonItem
{
Q_OBJECT
public:
explicit HexPolygon(int, int, int);
HexPolygon(HexPolygon&&); // error use of deleted funciton
HexPolygon(const HexPolygon&); // error use of deleted function
HexPolygon& HexPolygon::operator =(const HexPolygon&); // final error
}
答案 0 :(得分:1)
声明中的这一行
HexPolygon& HexPolygon::operator =(const HexPolygon&); // final error
应该是
HexPolygon& operator=(const HexPolygon&);
在HexPolygon类本身的声明中省略“HexPolygon ::”。
在HexPolygon类之外的方法定义中,您将返回HexPolygon :: namespace:
HexPolygon& HexPolygon::operator =(const HexPolygon&)
{
// the implementation
}
我也不认为让HexPolygon继承QObject和QGraphics ......是个好主意。可能存在一些一般性设计问题。 试着保持它相当简单,也许使用比继承更多的组合。
像@R Sahu上面写的那样:QGraphicsxxx中的那些Q_OBJECT非常可疑。