Re[3]: два строковых аргумента => параметры-типы шаблона
От: Erop Россия  
Дата: 29.09.11 06:47
Оценка:
Здравствуйте, 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 или правки той либы на мой взгляд невозможно. Отсюда и возникла исходная задача.


Мне кажется, что если ты расскажешь чуть блльше, то легчебудет объяснтьь кто что думпнт по поводу твоего вопооса.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.