In qsensor.h, there is IMPLEMENT_READING MACRO defined as:
#define IMPLEMENT_READING(classname)\
IMPLEMENT_READING_D(classname, classname ## Private)
#define IMPLEMENT_READING_D(classname, pclassname)\
classname::classname(QObject *parent)\
: QSensorReading(parent, new pclassname)\ // **** Problem! ***
, d(d_ptr())\
{}\
The problem is that the QSensorReading's constructor asks for QSensorReadingPrivate as the type of 2nd parameter. It means an inherited class e.g. GlueSensorReadingPrivate has to be derived from the QSensorReadingPrivate. But the QSensorReadingPrivate is defined in qsensor_p.h that is not public (should not be referred directly).