This question already has answers here:
Difference of keywords 'typename' and 'class' in templates?
(5个答案)
去年关闭。
在我的程序中使用
这是将接收向量的函数,我正在使用
与以下内容相同:
如果您不想返回一个简单的
(5个答案)
去年关闭。
在我的程序中使用
template <typename p>
时,它没有给出任何编译错误,但是当我传递两个不同类型的向量时,我使用template <class p>
却给出了错误。template <class p>
getvector(std::vector<p>&vec)
{
// my operation
}
这是将接收向量的函数,我正在使用
template <typename p>
它没有给出编译错误。任何机构都可以解释与template <typename p >
不同的原因 最佳答案
函数template declaration中的typename
和class
之间没有区别。声明模板参数时,它们的含义相同。您的函数需要一个返回类型:
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
}
关于c++ - 模板<typename p>没有给出错误,但是模板<class p>却给出了错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48397790/
10-13 08:12