2016-12-03 79 views
0

我在使用模板类和列表时遇到了一个问题,这里是代码。我收到的错误都是在同一行和事情就像语法错误,它说的printList非法使用类型为void,另一个错误是无法识别的模板声明/定义模板类T与列表的错误

#include <iostream> 
#include <list> 
#include <deque> 
#include <functional> 
#include <algorithm> 

using namespace std; 

template<class T> 
void printList<T>(const list& lst, string s) { 

cout << s << ": "; 
for (typename list::const_iterator i = lst.begin(); i != lst.end(); i++) 
cout << *i << " "; 
cout << endl; 
} 

它不断给我的错误与void printList<T>线可有人可以帮我找出为什么会发生这种情况吗?

+0

你是否真的需要所有这些主线来证明问题? –

+0

抱歉。我删除了不必要的代码 – zachstarnes

+1

使用'名单'那就是你有'list'和删除错误放置''。 –

回答

0

声明函数普通的方法是:

template<class T> 
void printList(const list<T>& lst, string s) 

您还需要改变

cout << s << endl; 

cout << s.c_str() << endl; 

以上典雅只是

#include <string> 

还有

list::const_iterator 

list<T>::const_iterator 

否则你不声明你的列表对象的模板类型。

+0

非常感谢你! – zachstarnes

+0

'cout << s.c_str()<< endl;'不正确。 '''''''''''cout'可以很好地工作。 –

+0

我的意思是s.c_str()的作品...,他将需要使用s.c_str()或包括他的代码编译(至少在我的编译器)。 – aah