template <typename p =“”>没有给出错误但是模板<class p =“”>给出了错误

时间:2018-01-23 09:05:07

标签: c++

在我的程序中使用template <typename p>时,它没有给出任何编译错误,但我使用template <class p>给出了错误,而我传递了两个不同类型的向量。

template <class p>

getvector(std::vector<p>&vec)
{
// my operation
}

这是接收向量的函数,我使用template <typename p>它没有给出编译错误。任何机构都可以解释与template <typename p >

有何不同之处

1 个答案:

答案 0 :(得分:1)

功能template declaration中的typenameclass之间没有区别。声明模板参数时,它们的含义相同。您的函数需要返回类型:

template <class p>
std::vector<p> getvector(std::vector<p> &vec)
{
    // your code
    return vec;
}

与以下内容相同:

template <typename p>
std::vector<p> getvector(std::vector<p> &vec)
{
    // your code
    return vec;
}

如果您不想返回简单的void功能,请执行以下操作:

template <typename p> // or template <class p>
void getvector(std::vector<p> &vec)
{
    std::cout << vec[0]; // your code here
}