0

非テンプレート関数を介してテンプレート関数のパラメーターを渡すのに問題があります。

私がこれを持っているとしましょう:

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;
    }
}

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>&)'

4

1 に答える 1

5

さて、あなた_printAll(DBst,DBas);は2つの異なるタイプの配列です。同じ型の配列を_printAll2 つだけ取ることができます。で関数を定義する必要があります

template <class T1, class T2>
void printAll(Array <T1> &DBst, Array <T2> &DBas) 

および対応する _printAll

于 2012-05-02T23:20:08.923 に答える