2013-09-28 3 views
0

dialog.h를 컴파일하는 데 문제가 발생했습니다. 컴파일러는 QHostAddress :: Any가 형식이 아니며 숫자 상수 앞에 예상 식별자가 있다고 불평합니다. (둘 다 dialog.h의 마지막 줄에서).클래스 인스턴스화시 qt 컴파일러 오류

왜 컴파일되지 않는지 누군가가 알 수 있습니까?

class Server : public QTcpServer 
{ 
    Q_OBJECT 

public: 
    Server(QHostAddress listenAddress, quint16 listenPort, QObject *parent = 0); 
    QHostAddress hostAddress; 
    quint16 hostPort; 

protected: 
    void incomingConnection(qintptr socketDescriptor); 

private: 

}; 

대화 : 나는

dialog.h

#include <QWidget> 
#include <QHostAddress> 
#include "server.h" 

class QLabel; 
class QPushButton; 

class Dialog : public QWidget 
{ 
    Q_OBJECT 

public: 
    Dialog(QWidget *parent = 0); 

private: 
    QLabel *statusLabel; 
    QPushButton *quitButton; 
    Server server; 
}; 

server.h ... 내가 생각 ... 서버 개체를 인스턴스화, 서버 생성자가 기대하는 매개 변수를 전달 해요 cpp를 (부분적으로)

Dialog::Dialog(QWidget *parent) 
    : QWidget(parent), server(QHostAddress::Any, 4000) 
{ 

server.cpp (부분)

#include "server.h" 
#include "clientthread.h" 

#include <stdlib.h> 
Server(QHostAddress listenAddress, quint16 listenPort, QObject *parent = 0) 
    : hostAddress(listenAddress), hostPort(listenPort), QTcpServer(parent) 
{ 
} 

위의 코드가 업데이트되었습니다. 이제 컴파일러가 불평합니다 :

Server의 생성자 정의에서 'listenAddress'앞에 ')'가 올 것으로 예상됩니다.

답변

0

서버 개체를 Dialog 클래스 멤버 변수로 선언하고 생성자에서 정의해야합니다. 다음은 대화 상자 클래스처럼 보이는 방법이다 :

dialog.h

#include <QWidget> 
#include <QHostAddress> 
#include "server.h" 

class QLabel; 
class QPushButton; 

class Dialog : public QWidget 
{ 
    Q_OBJECT 

public: 
    Dialog(QWidget *parent = 0); 

private: 
    QLabel *statusLabel; 
    QPushButton *quitButton; 
    Server server; // Declare server member variable. 
}; 

dialog.cpp

Dialog::Dialog(QWidget *parent) 
: 
    QWidget(parent), 
    server(QHostAddress::Any, 4000) // construct server 
{ 
    //... 
} 
+0

하지만 (4)의 :: 모든 열거 값을 전달하려면 ... – TSG

+0

@Michelle : 알았어, 당신이 생성자를 호출 할 때,하지만 그것을 선언 할 때, 실제 값이 아닌 인자로 타입을 포함해야한다. – vahancho

+0

위의 server.h에서 내가 그랬다고 생각했습니다. 변경할 코드를 표시하는 고정 코드 몇 줄을 제공 할 수 있습니까? – TSG

관련 문제