Здравствуйте, kinoman, Вы писали:
K> т.е. на самом деле есть не avar.method1(); а avar.method1(i1,i2,i3);. Т.е. сейчас всё примерно так:
K>K>//main.cpp
K>...
K>if (arg1=="argT1_1" && arg2=="argT2_1") {
K> A<T1_1,T2_1> avar;
K> avar.method1(i1,i2,i3);
K> avar.method2(j1,j2);
K>}
K>...
K>// adef.h
K>template <class T1, class T2> void A<T1,T2>::method1(int i1, int i2, int i3) {
K> typename T1::ZZ1 zz1(i1,i2);
K> typename T2::ZZ2 zz2(zz1,i3);
K> ...
K>}
K>
Совсем запутал.
А как узнать, какие ппрамниры в каком случае пнредавать?
Один из путей решения такой проблемы — сделать код полиморфным.
Типа написать какую-то структуру из котооой легео извлечь нужные ппрамнтры и полиморфную иерархию шаблонных классов, которые заворачивают всё это дело.
После этого пишешь шаблон класса-регистратора, который устанавливает ооображение строчек на типы.
Ну и получаешь прстую функцию, которая по строчке гннерит то, что надо...
Геннришь левый и правый аргумент, акод их сочетающий, пишешь полиморфно...
K>Вобщем избавиться от этой конструкции без RTTI или правки той либы на мой взгляд невозможно. Отсюда и возникла исходная задача.
Мне кажется, что если ты расскажешь чуть блльше, то легчебудет объяснтьь кто что думпнт по поводу твоего вопооса.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском