我在通過非模板函數傳遞模板函數的參數時遇到了一些問題。將參數從非模板傳遞給模板函數?
讓我們supose我有這樣的:
template <class T>
void A(Array <T> &A) {
cout << "here";
}
void menu(Array<myType>& fooList) { // my type specified class type, created by me.
cout << "enter option ";
cin >> a;
switch {
case 1: A(fooList); break;
}
}
希望的例子是非常明顯的。這是否可能?我可以將參數從非模板函數傳遞給模板函數嗎?
編輯: - 我試圖建立原型的實際代碼沒有幫助。
domain.h
template <class T>
void printAll(Array <T> &DBst, Array <T> &DBas){
for(int i=0; i<DBst.lenght; i++){
DBst.M[i].printStudent();
std::cout<<" ___ ";
DBas.M[i].printAssgn();
std::cout<<std::endl;
}
}
或者Controller.h
template <class T>
void _printAll(Array <T> &DB1, Array <T> &DB2){
cout<<"List of students with their Assignment!"<<endl;
printAll(DB1, DB2);
cout<<"done!"<<endl;
}
menu.cpp
void Menu::mainMenu(Array <Student> &DBst,Array <Assignment> &DBas){
showMainMenu();
int ret = Menu::intInputHandler();
while(ret){
switch(ret){
case 1:studentMenu(DBst,DBas);break;
case 2:assignmentMenu(DBst,DBas);break;
case 3:statsMenu(DBst,DBas);break;
case 4:_printAll(DBst,DBas);break; //// ERROR ***
case 0:/*exit*/;break;
default:cout<<"Wrong option selected!";break;
}
}
}
menu.h
class Menu{
public:
void showMainMenu();
void showStudentMenu();
void showAssignmentMenu();
void showStatisticsMenu();
string stringInputHandler();
int intInputHandler();
void mainMenu(Array <Student> &,Array <Assignment> &);
void studentMenu(Array <Student> &,Array <Assignment> &);
void assignmentMenu(Array <Student> &,Array <Assignment> &);
void statsMenu(Array <Student> &,Array <Assignment> &);
};
*..\Menu.cpp:90:29: error: no matching function for call to '_printAll(Array<Student>&, Array<Assignment>&)'
什麼是你的代碼錯誤的,是什麼? –
以及我不能設法通過我的功能(tempalte)在菜單功能的權利... –
你會得到什麼錯誤? – chris