有没有办法让类成员对象的模板调用不同的构造函数?

时间:2016-06-14 02:01:05

标签: c++ c++11

在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)。这将阻止调用默认构造函数,但我想按照上面的方式编写类。

1 个答案:

答案 0 :(得分:1)

简答:否
您无法使用提供的构造函数构建QArray。为了使用初始化列表,需要有一个接受初始化列表的构造函数。如果我们在谈论this QArray,那么不,你就可以了。

实际上,你为什么要打扰默认构造函数? Qt的设计使得大多数对象可以默认构造然后设置。默认构造函数非常轻量级。

您应该担心自2005年以来您正在使用类失效的事实。您还应该担心不允许对您的矩阵使用nxn连续内存。