PDA

View Full Version : پیغام خطا از سازنده کلاس



zehs_sha
چهارشنبه 20 مرداد 1389, 18:44 عصر
سلام من برای کامپایل کلاسم با پیغام خطا زیر مواجه می شوم :


reference to `vtable for Work'
و فایل هدر :


#ifndef WORK_H
#define WORK_H

#include <qobject.h>


class Work:public QObject
{
Q_OBJECT
public:
Work();
void run();
public slots:
void changeSalery(int a);
};

#endif // WORK_H



و فایل برنامه :


#include "work.h"
#include "Emp.h"
#include <qDebug>

Work::Work(){

}

void Work::run(){
Emp *e=new Emp();
connect(e,SIGNAL(changeSalery(int)),this,SLOT(chan geSalery(int)));
}

void Work::changeSalery(int a){
qDebug()<<"A"<<a;
}


و از خط زیر ایراد می گیرد:


Work::Work(){

}

Mak-VS
پنج شنبه 21 مرداد 1389, 19:55 عصر
داخل constructor کلاست را خالی نگذار .

zehs_sha
دوشنبه 29 شهریور 1389, 16:48 عصر
class Frame: public QDialog{
Q_OBJECT
public:
Frame(QWidget *parent=0);
private:
QRadioButton *radioFarsi;
QRadioButton *radioEnglish;
QRadioButton *radioArabic;

QGroupBox *groupLanguge;
QGroupBox *createFrameLanguge();
QGroupBox *createFrameTarjomhe();

QTextEdit *textTarjomhe;
QLabel *lblTarjomhe;

};
در این قسمت هم باز پیغام خطا را میدهد و داخل سازنده هم خالی نیست

کل برنامه هم ضمیمه شده

حامد مصافی
دوشنبه 29 شهریور 1389, 17:05 عصر
معمولا اين خطا زماني اتفاق مي افتد كه كلاسي كه در آخرين كامپايل metaData نداشته صاحب آن شده، براي حل اين مشكل بايد به فايل pro تلنگري بزنيد، براي مثال يك فاصله بي معني در آن بنويسيد و سپس پروژه را rebuild كنيد. در صورتي كه مشكل حل نشد پروژه را clean كرده و فايل هاي make را حذف كنيد سپس build كنيد. يا اينكه شخصا دستور qmake را اجرا كنيد.