gpt4 book ai didi

c++ - 关于结构选择的模板错误

转载 作者:行者123 更新时间:2023-11-28 08:04:51 28 4
gpt4 key购买 nike

我的结构有问题……或类似问题。我有 2 个数组,其中一个定义为 Array <Student> DBst和一个Array <Assignment> DBas .事情在某个地方被遗漏了,因为我的一个函数(以模板形式)弹出一个错误,它告诉我 Class Assignment没有功能setStudent(...)但我不知道为什么它读我 struct DBst作为 Assigment 对象的集合。

域.h:

template <class T>
void addStudent(int a, int b, std::string c,Array <T> &A){
A.M[a].setStudent(a,b,c);
cout<<"here";
}

Controller .h:

template <class T1>
void _addStudent(Array <T1> &A){
int a,b;
string c;
cout<<"Enter ID:"<<endl;
cin>>a;
cout<<"Enter Group:"<<endl;
cin>>b;
cout<<"Enter Name:"<<endl;
cin>>c;

addStudent(a,b,c,A);
}

菜单.cpp:

void Menu::mainMenu(Array <Student> &DBst,Array <Assignment> &DBas){
showMainMenu();
int ret = Menu::intInputHandler();

switch(ret){
case 1:studentMenu(DBst,DBas);break;
case 2:assignmentMenu(DBas,DBst);break;
case 3:statsMenu(DBst,DBas);break;
case 4:_printAll(DBst,DBas);break;
case 0:break;
default:cout<<"Wrong option selected!";break;
}
Menu::mainMenu(DBst,DBas);

void Menu::studentMenu(Array <Student> &DBst,Array <Assignment> &DBas){
showStudentMenu();
int ret = Menu::intInputHandler();

switch(ret){
case 1:_addStudent(DBst);break;
case 2:_removeStudent(DBst);break;
case 3:_editStudent(DBst);break;
case 4:_printStudent(DBst);break;
case 5:_printAllStud(DBst);break;
case 6:_searchByID(DBst);break;
case 0:mainMenu(DBst,DBas);break;
default:cout<<"Wrong option selected!";break;
}
Menu::studentMenu(DBst,DBas);
}

菜单.h:

class Menu{

public:
string stringInputHandler();
int intInputHandler();
void mainMenu(Array <Student> &,Array <Assignment> &);
void studentMenu(Array <Student> &,Array <Assignment> &);
void assignmentMenu(Array <Assignment> &,Array <Student> &);
void statsMenu(Array <Student> &,Array <Assignment> &);
};

学生.cpp:

void Student::setStudent(int a,int b,string c){
this->ID = a;
this->group = b;
this->name = c;
}

我得到的错误是:

D:\c++\Begin\Lab6-8_UML/Domain.h:70:2: error: 'class Assignment'
has no member named 'setStudent'`

编辑:

template <class T>
struct Array{
int lenght;
T * M;

Array( int size ) : lenght(size), M(new T[size])
{
}
~Array()
{
delete[] M;
}
};

最佳答案

它在您提供的代码中不可见,但我怀疑您正在调用某处addStudent<T>功能与 Array<Assignment>参数(最后一个)和 Assignment类没有setStudent方法。

关于c++ - 关于结构选择的模板错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10479158/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com