有一個簡單的程序,其中,I可以插入一個字符串轉換爲靜態定義的大小的字符串數組20定義在C模板,誤差內++一類的一個新的對象:缺少模板參數
該程序的工作很好,直到我被指派改變它使用模板,所以代碼(與修改)將支持整數或字符串。
在包含的頭文件中使用類「Shelf」時,我不能再聲明以下對象int main(),「Shelf book;」 - 如果編譯器告訴我書還沒有被聲明,並且我缺少模板參數。
#include<iostream>
#include<string>
#define shelfSize 20
template<class T>
class Shelf{
public:
Shelf();//default constructor
void insert(T&);
private:
string bookshelf[shelfSize];
int counter;
};
template< class T>
Shelf<T>::Shelf(){
for(int i=0; i <shelfSize; i++)
bookshelf[i]="";
counter=0;
}
template< class T>
void Shelf<T>::insert(T &booknum){
bookshelf[counter] = booknum;
counter++;
}
int main(){
Shelf book;
string isbn="";
cout<<"Enter ISBN Number you wish to enter into the Array: "<<endl;
getline(cin, isbn);
book.insert(isbn);
return 0;
}
顯然,我大大淡化了我的程序,並希望關注實際給我的問題。正如我所說,我得到以下錯誤
所以說:「書」之前
缺少模板arguements;期望「;」在「書」之前。 「書」未申報。