Привет всем.
Сразу к делу. Есть несколько классов: Class1, Class2, Class3.
Соответственно есть и 3 объекта: obj1, obj2, obj3 от этих класов.
У каждого объекта есть одинаковые методы: method_a(), method_b(), method_c().
То есть к каждому объекту ( obj1, obj2, obj3 ) можна применить любой из этих метов, они у них все есть, лишь результат будут давать разный.
Проблема в следуещем.
Как приметить метод ( напр. method_a() ) к _необходимому_ объекту?
Напр.
std::string needObj;
...
// для метода method_a()
if ( needObj == "objectOne" ) {
obj1 -> method_a();
} else if ( needObj == "objectTwo" ) {
obj2 -> method_a();
} else if ( needObj == "objectThree" ) {
obj3 -> method_a();
}
...
и так далее...
Как видно это очень догло и много писанины. Тем более что у меня таких ф-ций будет много.
Можно как либо это организовать нормально?
Шаблоны не подходят так как им надо как раз передавать _нужный_ объект, и значит что всю писанину эту мне придеться сново писать. Перебор в шаблони сделать не получится, так как ему сново же нужно передавать объект в качестве параметра.
void * ф-ция тоже не подходит, как как придеться делать static_cast сново же писать эти циклы....
Есть ли какой-либо нормальный способ огранизовать это перебор нужного объекта с вызовом нужного метода в виде ф-ции или еще как-то?