шаблон шаблона
От: JakeS  
Дата: 19.10.04 10:16
Оценка:
изваяно:
здесь tPar хранит параметр любого типа.
class tParams{
std::vector<tParA *> m_params;
tParams() {};
    template<class T1>
        tParams(T1 t1) {m_params.push_back(new tPar<T1>(t1));}
    template<class T1, class T2>
        tParams(T1 t1, T2 t2) {m_params.push_back(new tPar<T1>(t1)); m_params.push_back(new tPar<T2>(t2));}
    template<class T1, class T2, class T3>
        tParams(T1 t1, T2 t2, T3 t3) {m_params.push_back(new tPar<T1>(t1)); m_params.push_back(new tPar<T2>(t2)); m_params.push_back(new tPar<T3>(t3));}
    template<class T1, class T2, class T3, class T4>
        tParams(T1 t1, T2 t2, T3 t3, T4 t4) {m_params.push_back(new tPar<T1>(t1)); m_params.push_back(new tPar<T2>(t2)); m_params.push_back(new tPar<T3>(t3)); m_params.push_back(new tPar<T4>(t4));}
}


теперь можно делать: Command(cmdID, tParams(i,ptr,class,struct)). скучно. набор параметров и типы не проверяются. Делаем кучу фукций:

f1(int i, char *p) {Command(cmd1, tParams(i, p));}
f2(int i, char *p) {Command(cmd2, tParams(i, p));}

вопрос. как избавиться от написания кучи функций, а ограничиться определением типа:

#define f1() (int, char*) или что-то типа того.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.