这里我试图实现一个通用功能来打印容器的所有元素但我遇到以下错误,
#include<iostream>
#include<list>
using namespace std;
template <typename T>
void print_elements(const T& coll)
{
for (const auto& elem : coll)
{
std::cout << elem << ' ';
}
}
int main()
{
list<char> coll; // list container for character elements
//appenading a to z using lists
for (char i = 'a'; i <= 'z'; ++i)
{
coll.push_back(i); //using the push back function
}
for (auto elem : coll) // in this case we have to use a range based for loop
{
cout << elem << ' ';
}
cout << endl;
cout << coll.size();
print_elements<char>(coll);
return 0;
}
我也收到这些错误:
候选:'template void print_elements(const T&)'voidprint_elements(const T&coll)模板参数推导/替换失败:
没有匹配功能可调用'print_elements(std :: __ cxx11 :: list&)'print_elements(coll);
我认为错误在于这行
print_elements<char>(coll);
将其更改为
print_elements<list<char>>(coll);
或者您可以这样放置
print_elements(coll);
错误在以下行中
print_elements<char>(coll);
因为您指定模板功能参数的类型为char
,但是您的coll
是not类型为char
但类型为std::list<char>
。
因此,您需要传递正确的参数类型,例如:
print_elements< std::list<char> >(coll);
或让template argument deduction自动确定模板参数类型,例如:
print_elements(coll);