我正在尝试为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
出了什么问题?该函数不在类中。我想念什么吗?预先感谢!
答案 0 :(得分:1)
编译cpp文件时,模板代码必须可用,不能只在标头中声明。
原因是编译器在读取模板时不生成任何代码。只有在使用它时,它才会构建它的一个实例。模板函数的声明不足以构建代码。
您还需要在头文件中包含实现。这是模板编程的众所周知的缺点。