将参数从非模板传递到模板函数
Passing parameters from non-template to template function?
我在通过非模板函数传递模板函数的参数时遇到了一些问题。
让我们假设我有这个:
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;
}
}
我希望这个例子足够清楚。这可能吗?参数可以从非模板函数传递到模板函数吗?
编辑: - 自从我尝试构建的原型以来的实际代码没有帮助。
域.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;
}
}
控制器.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;
}
菜单.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;
}
}
}
菜单.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>&)'
你的_printAll(DBst,DBas);
是两种不同类型的数组;_printAll
只能接受两个相同类型的数组。您需要定义一个函数
template <class T1, class T2>
void printAll(Array <T1> &DBst, Array <T2> &DBas)
和相应的_printAll
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 当从函数参数中的临时值调用复制构造函数时
- 如何从"decltype()"获取函数参数的数量<funtion>?
- 如何将lambda作为模板类的成员函数参数
- 模板参数推导失败,函数参数/参数不匹配
- 如何在C++中将迭代器作为函数参数传递
- 将函数参数"const char*"转换为"std::string_view"是
- C++ 如何将数组值解压缩为函数参数
- 主函数参数的属性
- 具有两个间接寻址运算符 (C++) 的函数参数的用途
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 如何定义在用作函数参数时工作的类模板的转换
- 将函数参数完美转发到函数指针:按值传递呢?
- 为什么我不能将引用作为 std::async 的函数参数传递
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以就地构造一个固定大小的数组作为函数参数?
- 接受模板作为函数参数
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- Arduino 函数参数