
矩阵类:
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) { ... }}; 变换类:
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>(); ... }}; 请注意,将矩阵类型更改为Matrix< 4,float>而不是Matrix< 4,T>将导致有效的编译.编译器是clang 4.0,语言版本是C 11.
解决方法 你应该添加关键字模板:result.template getSubmatrix<3,T>();// ^^^^^^^^
没有它,编译器会认为<是一个比较运算符. PS.在这种情况下,g产生一个更容易理解的错误:
总结error: invalID operands of types
<unresolved overloaded function type>andintto binaryoperator<
以上是内存溢出为你收集整理的c – 无法从另一个模板类调用模板类的模板成员函数全部内容,希望文章能够帮你解决c – 无法从另一个模板类调用模板类的模板成员函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)