This question already has answers here:
Qt Linker Error: “undefined reference to vtable” [duplicate]
                                
                                    (9个答案)
                                
                        
                                3年前关闭。
            
                    
我在以下代码中有错误。我尝试使用此处提供的许多选项来修复它,但无法解决。

这是.h

#ifndef JUEGO2PRUEBA_H
#define JUEGO2PRUEBA_H
class juego2Prueba: public QGraphicsView
{
Q_OBJECT
public:
    juego2Prueba();
    ~juego2Prueba();
private slots:
    void on_buttonLeft_clicked();
    void on_buttonRight_clicked();
    void on_buttonUp_clicked();
    void on_buttonDown_clicked();

private:
    void mueveMomia();
    void mejorMovMomia(QChar direccion);
    void finalizaJuego();
    bool puedeMoverse(int x, int y,QChar mov);
    void creaTablero();
}


和.cpp

juego2Prueba::juego2Prueba(){
    //CODE
}

void juego2Prueba::on_buttonRight_clicked()
{//CODE}

void juego2Prueba::on_buttonLeft_clicked()
{//CODE}
void juego2Prueba::on_buttonUp_clicked()
{//code}
void juego2Prueba::on_buttonDown_clicked()
{//code}
void juego2Prueba::mueveMomia(){
//code}
void juego2Prueba::mejorMovMomia(QChar direccion){
//CODE}
void juego2Prueba::finalizaJuego(){
    this->hide();
    timerPerdio->stop();}
bool juego2Prueba::puedeMoverse(int x, int y, QChar mov){
//code}
void juego2Prueba::creaTablero(){
//more code}
juego2Prueba::~juego2Prueba(){
}


错误:

C:\Users\Barrionuevo\Desktop\build-MummyAlgoritmos-Desktop_Qt_5_6_0_MinGW_32bit-Debug\debug\juego2prueba.o:-1: In function `ZN12juego2PruebaC2Ev':
C:\Users\Barrionuevo\Desktop\MummyAlgoritmos\juego2prueba.cpp:7: error: undefined reference to `vtable for juego2Prueba'
C:\Users\Barrionuevo\Desktop\MummyAlgoritmos\juego2prueba.cpp:7: error: undefined reference to `vtable for juego2Prueba'

最佳答案

“未定义对vtable的引用”在qt中表示


信号插槽机制有问题。信号已经
已发送,但对插槽对象的引用无效。所以尝试找到
哪个信号/插槽关系被破坏,也许您从未
为视图分配模型
还有旧的编译器生成的moc文件,这些文件仍然存在。只需删除完整的调试和发布文件夹。

关于c++ - 错误:未定义对“vtable for class”的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38449649/

10-11 16:30