在Matrix类中,有一个类型为QArray<QArray<T>>
的成员变量。我可以使用成员初始化列表调用外部类QArray一个param构造函数,但对于内部类我不知道如何做。内部QArray将首先使用默认构造函数然后我将不得不使用循环使每个矩阵[i]使用1个param构造函数。这是代码:
#include "QArray.h"
class Matrix {
QArray<QArray<T>> matrix;
Matrix(int n) : matrix(n) {
for (int i = 0; i < n; i++) {
matrix[i] = QArray<T>(n);
}
}
}
作为解决方法,我将类型更改为SA<SA<T> *>
并更改了matrix[i] = new SA<T>(cols)
。这将阻止调用默认构造函数,但我想按照上面的方式编写类。
答案 0 :(得分:1)
简答:否。
您无法使用提供的构造函数构建QArray
。为了使用初始化列表,需要有一个接受初始化列表的构造函数。如果我们在谈论this QArray,那么不,你就可以了。
实际上,你为什么要打扰默认构造函数? Qt的设计使得大多数对象可以默认构造然后设置。默认构造函数非常轻量级。
您应该担心自2005年以来您正在使用类失效的事实。您还应该担心不允许对您的矩阵使用nxn
连续内存。