шаблоны и Q_OBJECT
От: gencoder  
Дата: 30.12.16 08:26
Оценка:
как бы обойти ошибку "Template classes not supported by Q_OBJECT", если параметрический тип нужен внутри слотов без параметров?

template<typename T>
class GLDrawer : public QGLWidget
{
Q_OBJECT
... 
  T rX;
  T h;
public slots:
  void rotateAroundX()
  {
     rX += h;
  }
};

using GLDrawerFloat = GLDrawer<GLfloat>;



извиняюсь, придумал ответ, но как удалить сообщение не знаю
template<typename T> 
struct GLRotater
{
    T rx;
    T h;
    void rotateAroundX(){ rx +=h ; }
};

using GLCurrentRotater = GLRotater<float>;

struct GLDrawer
{
/*
Q_OBJECT
...
*/
public /*slots*/:
  void rotateAroundX()
  {
     GLCurrentRotater::rotateAroundX();
  }
};
Отредактировано 30.12.2016 8:43 gencoder . Предыдущая версия . Еще …
Отредактировано 30.12.2016 8:27 gencoder . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.