Я определил класс с именем «Корабль», который наследует QGraphicsItem. Я попытался создать экземпляр класса Ship в другом классе с именем MarineTrafficSimulator в методе "drawShip". Я еще не использовал ни один из не реализованных методов QGraphicsItem, но я не могу понять, почему это делает класс Ship абстрактным классом и вызывает ошибку «недопустимое новое выражение абстрактного класса».
Это мой заголовок класса Ship :
#ifndef SHIP_H
#define SHIP_H
#include <QGraphicsItem>
#include <QGraphicsScene>
class Ship : public QGraphicsItem
{
public:
Ship();
QPolygon shape;
};
#endif // SHIP_H
и класс корабля cpp:
#include "ship.h"
Ship::Ship()
{
shape = QPolygon();
shape.setPoints(5, -10,-10, -10,10, 20,10, 30,0, 20,-10);
}
и класс, в котором я пытаюсь создать экземпляр корабля, и я получаю ошибку:
#include "marinetrafficsimulator.h"
#include "ui_marinetrafficsimulator.h"
MarineTrafficSimulator::MarineTrafficSimulator(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MarineTrafficSimulator)
{
scene = new QGraphicsScene(this);
ui->setupUi(this);
ui->simulate->setText("Simulate");
ui->graphicsView->setScene(scene);
}
void MarineTrafficSimulator::drawShip()
{
QBrush greenBrush(Qt::green);
QPen whitePen(Qt::white);
ship = new Ship(); // The line that is causing the error
// scene->addPolygon(ship->shape,whitePen,greenBrush);
// scene->addRect(0,0,10,10,whitePen,greenBrush);
}
MarineTrafficSimulator::~MarineTrafficSimulator()
{
delete ui;
}