我正在尝试将指针(char *)传递给我写的泛型函数。但我得到一个错误“在此上下文中重载foo模糊”。为什么会这样?
template <class T>
T foo(T a, T b)
{
return a+b;
}
int main()
{
char *c="Hello",*d="world";
foo<char*>(c,d);
return 0;
}
答案 0 :(得分:0)
它没有理由添加两个指针,它会导致一个非敏感的指针。想象一下,例如第一个文本位于地址0x7fffff00
,第二个文本位于0x80000100
。然后在32位机器上添加后,您将获得... 0
。零。空指针!
也许您想要使用字符串,例如:
#include <string>
template <class T>
T foo(T a, T b)
{
return a+b;
}
int main()
{
std::string c="Hello", d="world";
foo(c,d);
return 0;
}
另请注意:在许多情况下(像这一个)编译器可以为您推断模板类型,因此没有理由像foo<std::string>(c,d)
那样明确地编写它。