c++ - 将指针传递为泛型类型c ++模板

c++ - 将指针传递为泛型类型c ++模板,第1张

我正在尝试将指针(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;
}

最佳答案:

1 个答案:

答案 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)那样明确地编写它。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复