模板函数产生未定义的参考错误

时间:2019-10-10 20:59:25

标签: c++ templates

我正在尝试为C ++中具有任何类型(int,float等)坐标的向量实现“曼哈顿距离”的Template函数。

所以我有这个:

_formattedDate = DateFormat('MM-dd-yyyy').format(DateTime.parse(_enteredDate))

当尝试使用它(在另一个文件中)时,请执行以下操作:

template <typename T>
T manhattan_distance(std::vector<T> v1, std::vector<T> v2) { 
    //implementation
}

std::vector<int> v1 = [1,2,3]; std::vector<int> v2 = [4,5,5]; int res = manhattan_distance(v1,v2); -ing时,出现此错误:

make

出了什么问题?该函数不在类中。我想念什么吗?预先感谢!

1 个答案:

答案 0 :(得分:1)

编译cpp文件时,模板代码必须可用,不能只在标头中声明。
原因是编译器在读取模板时不生成任何代码。只有在使用它时,它才会构建它的一个实例。模板函数的声明不足以构建代码。

您还需要在头文件中包含实现。这是模板编程的众所周知的缺点。