该程序未编译。有什么问题?
#include<iostream>
#include<map>
using namespace std;
template<class T>class Data{
string header;
T data;
public:
Data(string h, T d){header = h, data = d;}
void WriteData()
{
cout<<header<<": "<<data<<endl;
}
};
int main(int argc, _TCHAR* argv[])
{
Data<int> idata("Roll", 100);
Data<string>sdata("Name","Jakir");
idata.WriteData();
sdata.WriteData();
return 0;
}
显示以下错误。
错误 C2679:二进制“<<”:未找到采用“std::string”类型右侧操作数的运算符(或没有可接受的转换)c:\program files (x86)\microsoft visual studio 10.0\vc \include\ostream(679): 可以是 'std::basic_ostream<_Elem,_Traits> &std::operator <<>(std::basic_ostream<_Elem,_Traits> &,const char *)' 与 [ _Elem=char, _Traits=std::char_traits ]
尝试匹配参数列表'(std::ostream, std::string)' .....\maptest\mapt\mapt\mapt.cpp(16):同时编译类模板成员函数'void Data:: WriteData(void)' 与 [ T=int ]