关于c ++:template< typename p>


template <typename p> is not giving error but and template <class p> is giving error

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
template <class p>

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

这是接收向量的函数,我使用的是template ,它不会给出编译错误。如果与template 不同,任何人都能解释其原因吗?


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

1
2
3
4
5
6
7
8
template <class p>
std::vector<p>
 getvector(std::vector<p>
 &vec)
{
    // your code
    return vec;
}

同:

1
2
3
4
5
6
7
8
template <typename p>
std::vector<p>
 getvector(std::vector<p>
 &vec)
{
    // your code
    return vec;
}

如果不想返回一个简单的void函数:

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