Использование QGenericMatrix в качестве атрибута для другого класса - PullRequest
0 голосов
/ 16 мая 2018

Qt имеет класс с именем QGenericMatrix. Это определяется следующим образом:

template <int N, int M, typename T>
class QGenericMatrix
{...}

Я хотел бы использовать его в качестве атрибута colorMatrix в своем собственном классе MyClass, а затем инициализировать его в конструкторе следующим образом:

MyClass::MyClass(int n, int m)
{
  colorMatrix = new QGenericMatrix<n, m, QColor>;
}

Однако синтаксис, вероятно, очень неправильный. Как мне написать объявление в заголовочном файле и конструкторе?

1 Ответ

0 голосов
/ 16 мая 2018

Поскольку параметры шаблона должны быть известны во время компиляции, у вас есть две опции:

  1. Исправить размер и тип матрицы в MyClass.например,

    class MyClass {
      QGenericMatrix<2, 3, QColor> colorMatrix;
    }
    
  2. Определить MyClass как шаблон, который принимает те же параметры шаблона, что и QGenericMatrix, и создать экземпляр colorMatrix с помощью параметров шаблона MyClass.Примерно так:

    template<int N, int M, typename T>
    class MyClass {
      MyClass() { // init }
      T entry(int i, int j);
    
      QGenericMatrix<N, M, T> colorMatrix;
    }
    
    template<int N, int M, typename T>
    T MyClass::entry(int i, int j) { return colorMatrix(i, j); }
    

    Естественно, в этом случае MyClass должен быть создан с параметрами шаблона, которые также должны быть известны во время компиляции.

    MyClass<2, 3, QColor> myClass;
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...