В общем даже незнаю это баг или я чего-то не понимаю,
пишу почтовый клиент:
есть класс 
C++ (Qt)
class SmtpAuthData
{
....
 
};
 
это класс обычных данных, которые нужны для авторизации,
сам класс который занимается приемом\передачей запросов серверу почты
наследуется от этого класса и QObject:
C++ (Qt)
class Letter : public QObject, private SmtpAuthData
{
 
    SmtpAuthData smtpData;
    const QString helloSmtp;
 
    // internet connection
    QTcpSocket tcpSocket;
    quint16 blockSize;
 
    Q_OBJECT
 
...
 
private slots:
    void error_happens(QAbstractSocket::SocketError socketError);
    void stateBecomeChange(QAbstractSocket::SocketState state);
...
 
 
из-за того что есть слот 
C++ (Qt)
void stateBecomeChange(QAbstractSocket::SocketState state);
,
который реагирует на сигнал 
C++ (Qt)
stateChanged(QAbstractSocket::SocketState )
в конце хедера пришлось добавить Q_DECLARE_METATYPE(QAbstractSocket::SocketState);
Все хорошо, но если поменять местами классы в записи наследования, например
C++ (Qt)
class Letter :  private SmtpAuthData, public QObject
то компоновщик начнет сыпать ошибками:
debug\moc_Letter.cpp:53:8: error: 'staticMetaObject' is not a member of 'SmtpAuthData' 
debug\moc_Letter.cpp: In member function 'virtual void* Letter::qt_metacast(const char*)': 
debug\moc_Letter.cpp:73:12: error: 'qt_metacast' is not a member of 'SmtpAuthData' 
debug\moc_Letter.cpp: In member function 'virtual int Letter::qt_metacall(QMetaObject::Call, int, void**)': 
debug\moc_Letter.cpp:78:11: error: 'qt_metacall' is not a member of 'SmtpAuthData' 
Это баг или это какая-то специфика наследования, в чем разница чередования в списке наследования?