gpt4 book ai didi

c++ - 基于封闭类模板参数有条件地定义嵌套类

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:18 25 4
gpt4 key购买 nike

只有方阵 (M==N) 矩阵才有 LU 分解。是否有一种简单的方法来禁用 class lu 和方法 luFactorization iff M!=N 下面?

template<int M, int N>
class matrix {

// lots and lots of operators and stuff
// ...

class lu {
// ...
}

lu luFactorization() {
// ...
}

}

最佳答案

定义“简单”。 :)

模板部分特化确实有效:

template <int M, int N>
class matrix {
// class lu, function luFactorization *not* defined
};

template <int N>
class matrix<N,N> {
// class lu, function luFactorization defined
class lu { };
lu luFactorisation() { /* ... */ }
};

如果两个变体都有很多包袱,您可以将部分或全部包袱转移到一个共同的父类(super class)中。您还可以考虑制作 luluFactorisation 非成员模板。

关于c++ - 基于封闭类模板参数有条件地定义嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49674580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com