C++ 将QGenericMatrix用作另一个类的属性
Qt有一个名为C++ 将QGenericMatrix用作另一个类的属性,c++,qt,C++,Qt,Qt有一个名为QGenericMatrix的类。它的定义如下: template <int N, int M, typename T> class QGenericMatrix {...} 但是,语法可能非常不正确。如何在头文件和构造函数中写入声明?由于必须在编译时知道模板参数,因此有两个选项: 修复MyClass中的矩阵大小和类型。e、 g class MyClass { QGenericMatrix<2, 3, QColor> colorMatrix; } c
QGenericMatrix
的类。它的定义如下:
template <int N, int M, typename T>
class QGenericMatrix
{...}
但是,语法可能非常不正确。如何在头文件和构造函数中写入声明?由于必须在编译时知道模板参数,因此有两个选项:
class MyClass {
QGenericMatrix<2, 3, QColor> colorMatrix;
}
class-MyClass{
QGenericMatrix颜色矩阵;
}
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(){//init}
T输入(int i,int j);
QGenericMatrix颜色矩阵;
}
模板
T MyClass::entry(inti,intj){返回颜色矩阵(i,j);}
当然,在这种情况下,MyClass必须使用模板参数进行实例化,而模板参数在编译时也必须是已知的
MyClass<2, 3, QColor> myClass;
MyClass-MyClass;
由于模板参数必须在编译时已知,因此有两个选项:
class MyClass {
QGenericMatrix<2, 3, QColor> colorMatrix;
}
class-MyClass{
QGenericMatrix颜色矩阵;
}
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(){//init}
T输入(int i,int j);
QGenericMatrix颜色矩阵;
}
模板
T MyClass::entry(inti,intj){返回颜色矩阵(i,j);}
当然,在这种情况下,MyClass必须使用模板参数进行实例化,而模板参数在编译时也必须是已知的
MyClass<2, 3, QColor> myClass;
MyClass-MyClass;
在编译时是否知道N、M和T?模板参数必须在编译时已知。例如,像
intn
这样的变量不能用于初始化模板。在编译时n、M和T是已知的吗?模板参数必须在编译时已知。像intn
这样的变量不能用于初始化模板。对,选项2就是我想要的。但是,如何为此编写构造函数?我需要补充什么吗?那么getColorMatrix
方法呢?我可以写QGenericMatrix MyClass::getColorMatrix(){return colorMatrix;}
?下面是一个工作示例:。除了类声明之外的函数声明必须在模板头之前,您可以用与前面相同的方式编写函数<在这种情况下,代码>模板。工作正常。非常感谢这些例子!对,选项2就是我想要的。但是,如何为此编写构造函数?我需要补充什么吗?那么getColorMatrix
方法呢?我可以写QGenericMatrix MyClass::getColorMatrix(){return colorMatrix;}
?下面是一个工作示例:。除了类声明之外的函数声明必须在模板头之前,您可以用与前面相同的方式编写函数<在这种情况下,代码>模板。工作正常。非常感谢这些例子!