2013-06-30 3 views
0
error: no matching function or call to 'MainWindow::~MainWindow()' 

앱을 실행할 수 없습니다 - QtSql. 이 문제를 해결하기 위해 Google에서 찾을 수 없었습니다. 내 프로젝트 파일의 코드 (mainwindow.cpp, main.cppmainwindow.h)를 포함 시켰습니다. 그리고 나는 .pro (QT + = core gui sql)에도 sql을 포함시켰다."오류 : 일치하는 함수 또는 호출이 없습니다"라는 메시지가 내 창 소멸자에게 표시됩니다.

번호 :

mainwindow.h: 

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QMainWindow> 
#include <QtDebug> 
#include <QtSql/QSqlDatabase> 
#include <QtSql/QSqlTableModel> 


namespace Ui { 
class MainWindow; 
} 

class MainWindow : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    explicit MainWindow(QWidget *parent = 0); 
    virtual ~MainWindow(); 

private: 
    Ui::MainWindow *ui; 
    QSqlDatabase db; 
    QSqlTableModel *model; 


}; 

#endif // MAINWINDOW_H 

MAIN.CPP :

#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

mainwindow.cpp :

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    db = QSqlDatabase::addDatabase(QString("QMYSQL")); 
    db.setHostName(QString("LOCALHOST\\MYSQL")); 
    db.setDatabaseName(QString("testdb")); 
    db.setUserName(QString("ROOT")); 
    db.setPassword(QString("PASSWORD")); 

    db.open(); 

MainWindow::~MainWindow() // ERROR 
{ 
    db.close(); 
    delete ui; 
} 

컴파일 출력 :

16:34:42: Running steps for project TisbiCourseWork... 
16:34:42: Configuration unchanged, skipping qmake step. 
16:34:42: Starting: "/usr/bin/make" 
g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I../TisbiCourseWork -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I. -I. -I../TisbiCourseWork -I. -o main.o ../TisbiCourseWork/main.cpp 
g++ -c -m64 -pipe -g -Wall -W -D_REENTRANT -DQT_SQL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I../TisbiCourseWork -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtSql -I/usr/include/qt4 -I. -I. -I../TisbiCourseWork -I. -o mainwindow.o ../TisbiCourseWork/mainwindow.cpp 
../TisbiCourseWork/mainwindow.cpp: In constructor 'MainWindow::MainWindow(QWidget*)': 
../TisbiCourseWork/mainwindow.cpp:18:25: error: no matching function for call to 'MainWindow::~MainWindow()' 
MainWindow::~MainWindow() 
         ^
../TisbiCourseWork/mainwindow.cpp:18:25: note: candidate is: 
In file included from ../TisbiCourseWork/mainwindow.cpp:1:0: 
../TisbiCourseWork/mainwindow.h:20:13: note: virtual MainWindow::~MainWindow() 
    virtual ~MainWindow(); 
      ^
../TisbiCourseWork/mainwindow.h:20:13: note: candidate expects 1 argument, 0 provided 
../TisbiCourseWork/mainwindow.cpp:19:1: error: expected ';' before '{' token 
{ 
^ 
../TisbiCourseWork/mainwindow.cpp:22:1: error: expected '}' at end of input 
} 
+2

생성자의 본문이 열려있어 닫을 때'} '가 없습니다. – Mat

+0

와우, 고마워, 내가 어떻게 그것을 놓칠 수 있니 .... 이제 한 잔의 cofee를 얻을 시간이다. =/ – rcx

+0

이 질문은 구문 오류 또는 오타가 원인 인 것으로 보입니다. –

답변

1

소멸자 정의 전에 대괄호를 닫지 않았습니다.

//... 
    db.setPassword(QString("PASSWORD")); 

    db.open(); 
} //close a bracket 

MainWindow::~MainWindow() // ERROR 
{ 
//...