Собсна вот:
http://techbase.kde.org/Development/Tutorials/Common_Programming_Mistakes#Forward_Declarations
Для Ъ
For example:
#include <QWidget> // slow
#include <QStringList> // slow
#include <QString> // slow
class SomeInterface
{
public:
virtual void widgetAction( QWidget *widget ) =0;
virtual void stringAction( const QString& str ) =0;
virtual void stringListAction( const QStringList& strList ) =0;
};
The above should instead be written like this:
class QWidget; // fast
class QStringList; // fast
class QString; // fast
class SomeInterface
{
public:
virtual void widgetAction( QWidget *widget ) =0;
virtual void stringAction( const QString& str ) =0;
virtual void stringListAction( const QStringList& strList ) =0;
};
не пойму, откуда во втором _правильном_ примере, компилятор найдет хидеры описанных класов? Или там забыли #include <QtGui>?