条款44:将与参数无关的代码抽离 templates
template<typename T, std::size_t n>
class SquareMatrix {
public:
...
void invert();
};
SquareMatrix<double, 5> sm1;
SquareMatrix<double, 10> sm2; // 具现化出两个 SquareMatrixtemplate<typename T>
class SquareMatrixBase> {
protected:
...
void invert(std::size_t matrixSize);
...
};
template<typename T, std::size_t n>
class SquareMatrix: private SquareMatrixBase<T> {
private:
using SquareMatrixBase<T>::invert;
public:
void invert() { this->invert(n); }
};Last updated