I was trying to make an arc in QGraphicsScene But getting following error:
 error: cannot allocate an object of abstract type 'arc'
                 arcItem = new arc(++id, startP, midP, endP);
I am getting error in cadgraphicsscene at mousepressevent
void CadGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    // mousePressEvent in the graphicsScene
    if(mouseEvent->button() == Qt::LeftButton)
    {
        switch (entityMode)
        {
         case ArcMode:
            if (mFirstClick)
            {
                startP = mouseEvent->scenePos();
                mFirstClick = false;
                mSecondClick = true;
            }
            else if (!mFirstClick && mSecondClick)
            {
                midP = mouseEvent->scenePos();
                mFirstClick = false;
                mSecondClick = false;
                mThirdClick = true;
            }
            else if (!mSecondClick && mThirdClick)
            {
                endP = mouseEvent->scenePos();
                mThirdClick = false;
                mPaintFlag = true;
            }
            if (mPaintFlag)
            {
                arcItem = new arc(++id, startP, midP, endP);
                itemList.append(arcItem);
                mUndoStack->push(new CadCommandAdd(this, arcItem));
                setFlags();
            }
        default:
            ;
        }
    }
My arc class looks as follows:
arc.cpp
    arc::arc(int i, QPointF point1, QPointF point2, QPointF point3)
    {
        // assigns id
        id = i;
        p1 = point1;
        p2 = point2;
        p3 = point3;
    }
int arc::type() const
{
    // Enable the use of qgraphicsitem_cast with ellipse item.
    return Type;
}
void arc::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
                     QWidget *widget)
{
    QPointF O; // intersection of lines
    QPointF B; // end point of horizontal line
    QPointF A;
    float halfSide = B.x()-O.x();
    QRectF rectangle(O.x() - halfSide,
                     O.y() - halfSide,
                     O.x() + halfSide,
                     O.y() + halfSide);
    int startAngle = 0;
    int spanAngle = (atan2(A.y()-O.y(),A.x()-O.x()) * 180 / M_PI) * 16;
    painter->drawArc(rectangle, startAngle, spanAngle);
}
The header file to above class is defined below:
arc.h
class arc : public QObject, public QGraphicsItem
{
    Q_OBJECT
public:
    arc(int, QPointF, QPointF, QPointF);
    virtual void paint(QPainter *painter,
                       const QStyleOptionGraphicsItem *option,
                       QWidget *widget);
    enum { Type = UserType + 6 };
    int type() const;
    int id;
    QPointF p1, p2, p3;
}
Please help me out to solve the error.
