Множественным наследованием никогда не пользовался, просто не приходилось. Сейчас такая ситуация:
1. Класс IQ (Interhit Qobject) - наследник QObjecta
#include <QObject>
#include <QDebug>
#include <QTimer>
class IQ : public QObject
{
Q_OBJECT
public:
IQ();
IQ(int);
QTimer *mainTimer;
int field;
public slots:
virtual void work();
};
////////////////////////////////////////// Implement
#include "iq.h"
IQ::IQ()
{
qDebug()<< "iq: empty constructor";
}
IQ::IQ(int digit)
{
field = digit;
mainTimer = new QTimer(this);
connect (mainTimer, SIGNAL(timeout()), this, SLOT(work()));
qDebug()<< "iq: constructor done, field = " << field;
mainTimer->start(1000);
}
void IQ::work()
{
// nothing
qDebug()<< "VTable mismatch ";
}
/// What i wanna get:
//IQ::IQ()
//{
// mainTimer = new QTimer(this);
// connect (mainTimer, SIGNAL(timeout()), this, SLOT(work()));
// mainTimer->start(1000);
// qDebug()<< "iq: empty constructor";
//}
//
//IQ::IQ(int digit)
//{
// IQ();
// field = digit;
// qDebug()<< "iq: constructor done, field = " << field;
//}
//
//void IQ::work()
//{
// // nothing
// qDebug()<< "VTable mismatch ";
//}
Закомментированный код - то что не работает. Почему-то перенося функцию в конструктор по умолчанию перестает циклически вызываться work.
Остальные файлы:
#include <QDebug>
class data
{
public:
data();
int smthg;
};
#include "data.h"
data::data()
{
smthg = 0;
qDebug()<< "smthg constructed";
}
#include "iq.h"
#include "data.h"
class result:public IQ, data
{
Q_OBJECT
public:
result();
result(int);
public slots:
virtual void work();
};
#include "result.h"
result::result()
{
qDebug() << "Result: empty constructor";
}
result::result(int digit):IQ(digit), data()
{
qDebug() << "Result: parametr constructor";
}
void result::work()
{
qDebug() << "Result: what i wanna see";
}
#include "result.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
result *a = new result(4);
return app.exec();
}
Туплю/Пробел в знаниях - помогите разобраться.