标题:预声明和包含头文件的问题
作者:weilong122
日期:2006-04-26 11:32
内容:
这是一个头文件
#ifndef SENDER_H
#define SENDER_H
#include
#include
//class QLabel;
class QPushButton;
class QTimer;
class QUdpSocket;
class QTextEdit;
class QString;
class QFile;
//class QFileDialog
class Sender : public QDialog
{
Q_OBJECT
public:
Sender(QWidget *parent = 0);
//public signals:
private slots:
void startBroadcasting();
void broadcastDatagram();
void openFile();
private:
//QLabel *statusLabel;
QPushButton *startButton;
QPushButton *quitButton;
QPushButton *openButton;
QUdpSocket *udpSocket;
QTimer *timer;
QTextEdit *showEdit;
int messageNo;
};
#endif
================================================
当把#include 注释掉
然后加上class QFileDialog
编译时报错sender.h:63: error: multiple types in one declaration
但如果在头文件中写#include
去掉class QFileDialog
编译可以通过
这是为什么呢?
我觉的QFileDialog和其它的如QPushButton. QString都是等价类
那么既然QPushButton. QString可以预声明,那么QFileDialog也应该可以预声明
难道这里还有什么问题?
#1 [colrain 04-26 11:51]
//class QFileDialog
是否忘加 ; 了呢
#2 [weilong122 04-26 13:47]
还真是忘了
#3 [guyansrg 04-26 20:35]
可能不是这个地方的原因,单从错误提示上来看:一个声明有多种类型 。
如果你看一下QFileDialog头文件的内容就知道了
class QPushButton;
class QButton;
class QLabel;
class QWidget;
class QFileDialog;
class QTimer;
class QNetworkOperation;
class QLineEdit;
class QListViewItem;
class QListBoxItem;
class QFileDialogPrivate;
class QFileDialogQFileListView;
在QFileDialog的头文件里,有class QFileDialog;
也就是说,QFileDialog可以预声明