尝试从另一个模板类中访问模板类的模板成员函数时,我遇到编译器错误.对getSubmatrix的函数调用导致编译器警告“表达式结果未使用”,关于参数(0,0),最终失败并出现编译器错误“必须调用对非静态成员函数的引用”.
@H_403_2@矩阵类:
template <std::size_t m,std::size_t n,typename T,std::size_t rowPadding = 0> class Matrix { public: ... template <std::size_t p,std::size_t q> Matrix<p,q,T,n - q>& getSubmatrix(std::size_t column,std::size_t row) { ... } };@H_403_2@变换类:
template <typename T> class Transform { public: ... Matrix<4,4,T> matrix() const { ... Matrix<4,T> result; result.getSubmatrix<3,3>(0,0) = Matrix<3,3,T>(); ... } };@H_403_2@请注意,将矩阵类型更改为Matrix< 4,float>而不是Matrix< 4,T>将导致有效的编译.编译器是clang 4.0,语言版本是C 11.