該程序未編譯。有什麼問題?模板類在C++中生成錯誤
#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:\程序文件(x86)的\微軟的Visual Studio 10.0 \ VC \包括\ ostream的(679):可以是「標準:: basic_ostream < _Elem,_Traits> &的std ::操作者< <>(標準:: basic_ostream < _Elem,_Traits> &,常量字符* )' with [ _Elem = char, _Traits = std :: char_traits ]
while試圖匹配參數列表'(std :: ostream,std :: string)' ..... \ maptest \ mapt \ mapt \ mapt.cpp(16):while compiling class template member function '無效數據::寫數據(無效)' 與 [ T = INT ]
請幫助。這很緊急。
+1,有時候它是簡單的事情:) – 2013-04-21 09:28:17
哦,我的上帝。我犯了什麼錯誤。非常感謝。它毀了我的2個小時。再次感謝。 – 2013-04-21 09:45:35
@JakirHossain:我們都在那裏;)祝你的項目好運 – 2013-04-21 09:46:31