在 Matrix 类模板中,您需要实现默认构造函数的 2 个特化(如果您可以这样称呼它)。
我有一个矩阵类
template <size_t N, size_t M, typename Field>
class Matrix { ... }
在其中,我需要为 M == N(方阵)的情况创建 2 个默认构造函数,然后将其作为单位 1 填充,而当 M != N 时则用零填充。我不太明白如何“如果我们使用模板参数,则重载此构造函数)
我听说过一些关于enable_if的事情,也许它在这里可以工作?:/
Matrix() {
for (size_t i = 0; i < N; i++) {
for (size_t j = 0; j < N; j++) {
if (i == j) {
vec[i][j] = Field(1);
}
else {
vec[i][j] = Field(0);
}
}
}
}
这样不好吗?
也许只是交换参数并使用默认值?
补充: 嗯,在构造函数本身中,要实现 2 个填充方法,请使用
if constexpr
. 在这里效果会很好。