0

構造に問題があります...またはそのようなものです。として定義されている 2 つの配列と 1 つがArray <Student> DBstあり Array <Assignment> DBasます。私の関数 (テンプレート形式) の 1 つがエラーを表示しClass Assignment、関数がないことを示しているため、見逃してしまうところがありますが、構造体をAssigment オブジェクトのコレクションとしてsetStudent(...)読み取る理由がわかりません。DBst

ドメイン.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);
}

Menuc.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> &);
};

Student.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;
    }
};
4

1 に答える 1

1

提供したコードには表示されませんが、パラメーター(最後のパラメーター)を使用してどこかでaddStudent<T>関数を呼び出しており、クラスにメソッドがない可能性があります。Array<Assignment>AssignmentsetStudent

于 2012-05-07T09:13:51.900 に答える