-1
我試着在下面的代碼中使用模板,但是我對主函數的第一行有問題!使用C++模板
{
#include <iostream>
using namespace std;
template <class T>
struct node
{
T inf;
node<T> * next;
};
template <class S>
class String
{
private :
int Slength;
node<S> * SS;
public :
void get_String()
{
SS = new node<S>;
SS -> next = NULL;
node<S> * now = SS;
char input;
while(input = getchar())
{
if((input =='\n') || (input == ' ') || (input == '\t'))
break;
now -> inf = input;
now -> next = new node<S>;
now = now -> next;
now -> next = NULL;
++Slength;
}
}
void show()
{
node<S> * now = SS;
while(now -> next != NULL)
{
cout << now -> inf ;
now = now -> next;
}
cout << endl;
}
};
int main()
{
String a;
a.get_String();
a.show();
cout << char(0) << " " << int(' ') << " " <<endl;
system("pause");
return 0;
}
我有加入後
<char>
解決了這個問題! 有沒有其他好的和有效的方法。 您是否知道任何可靠且可讀的模板參考?
爲什麼有''{在代碼的開始? – talnicolas 2012-04-19 14:38:53
當你實例化一個類模板時,你需要提供一個參數列表。如果你有'template class String ...',你可以使用'String <> a;',但即使所有模板參數都有默認值,你需要包含尖括號。順便說一句,字符串作爲鏈接的字符列表將是*可怕的*效率低下(對於實際數據的每個字節至少指出4個字節的指針)。由於您動態分配節點,因此可能比這更糟糕 - 通常每個節點最少爲16或32個字節。 –
2012-04-19 14:44:07
@talnicolas:嗯......你有時會在[cint](http://en.wikipedia.org/wiki/CINT)腳本的開頭看到交互式調用的腳本,但在這種情況下,不需要'#include'像'iostream'這樣的標準頭文件。 – dmckee 2012-04-19 15:07:07