c++ - 头文件中模板类实现的模板成员

标签 c++ class templates header-files generic-programming

我有一个类似这样的类(class)

template<class T>
class Matrix {
    ...
    template<class T2> auto dot(Matrix<T2> const& other);
}

这是我的实现,在头文件中的声明下:

template<class T, class T2>
auto Matrix<T>::dot(Matrix<T2> const& other) {
    [impl]
}

我收到的错误如下所示:

(C2244) 'Matrix<T>::dot' : unable to match function definition to an existing declaration

我哪里出错了?

最佳答案

语法错误。您在具有模板参数 T 的类模板中拥有一个具有模板参数 T2 的函数模板。它必须这样定义:

template<class T>
template<class T2> 
auto Matrix<T>::dot(Matrix<T2> const& other) {

}

关于c++ - 头文件中模板类实现的模板成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396217/

相关文章:

c# - 有什么方法可以减少 OPC UA 客户端中的标签浏览时间?...连接 OPC UA 服务器时

c++ - 从 BGL 图中提取邻接矩阵

c++ - 在 C++ 中打印 (2^n 的阶乘)/(2^n -1)mod m

jQuery 使用它们的类(而不是 ID)将多个 DOM 元素 move 到其他元素中

c++ - C++ 中的模板

c++ - 如何避免 C++ 类模板中的无限递归

c++ - std::stoi 可以验证数字的值是否超出基数范围吗?

c++ - 类类型作为参数和作为属性

java - 允许根据变量值实例化类的特定变量

c++ - 子类作为特化 - 即 : adding a method in the specialization