错误使用已删除功能后的错误额外限定

时间:2018-01-10 21:32:26

标签: c++

实现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
}

1 个答案:

答案 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非常可疑。