Помогите, пожалуйста, найти ошибки в коде и скажите: откуда такая ошибка при компиляции?
main.o: In function `MyWidget::MyWidget()':
main.cpp:(.text._ZN8MyWidgetC1Ev[MyWidget::MyWidget()]+0x21f): undefined reference to `vtable for NumberField'
main.cpp:(.text._ZN8MyWidgetC1Ev[MyWidget::MyWidget()]+0x229): undefined reference to `vtable for NumberField'
Код:
Код:
#include <QApplication>
#include <QPushButton>
#include <QGridLayout>
#include <QPainter>
#include <QWidget>
#include <QString>
#include <QFont>
class NumberField : public QWidget
{
Q_OBJECT
private:
int num;
protected:
void paintEvent(QPaintEvent * event);
signals:
void numberChanged(int newNumber);
public slots:
void add()
{
num+=5;
update();
emit numberChanged(num);
}
public:
NumberField()
{
num = 0;
setPalette(QPalette(QColor(200,200,200)));
setAutoFillBackground(true);
}
void setDefaultValue(int n )
{
num = n;
}
int number() const
{
return num;
}
};
void NumberField::paintEvent(QPaintEvent* /*event*/)
{
QPainter painter(this);
painter.drawText(30,30,QString::fromLocal8Bit("Количество очков: ") + QString::number(num));
}
class MyWidget : public QWidget
{
public:
MyWidget()
{
QPushButton *addFive = new QPushButton(QString::fromLocal8Bit("Добавить 5 очков"));
addFive->setFont(QFont("Times",20,QFont::Bold));
QPushButton *quit = new QPushButton(QString::fromLocal8Bit("Выход"));
quit->setFont(QFont("Sans",16,QFont::Bold));
connect(quit,SIGNAL(clicked()),qApp,SLOT(quit()));
NumberField *field = new NumberField;
field->setDefaultValue(0);
connect(addFive,SIGNAL(clicked()),field,SLOT(add()));
QGridLayout *grid = new QGridLayout;
grid->addWidget(addFive,1,0);
grid->addWidget(quit,1,1);
grid->addWidget(field,0,0,0,1);
grid->setColumnStretch(1,10);
setLayout(grid);
}
};
int main(int argc, char** argv)
{
QApplication app(argc,argv);
MyWidget widget;
widget.setGeometry(200,200,500,500);
widget.show();
return app.exec();
}