Страница 1 из 1

Сгенерировать имя функции

Добавлено: 27 авг 2004, 11:35
Motoroller
Здравствуйте!
Эта проблема, наверное, решена не одним программистом.

Есть функции fun1(), fun2(),...,fun100();
Как сгенерировать название необходимой в данный момент функции.
Поясню.

for(int i=1; i<=100; i++)
{
"fun"+i - должно вызывать соответствующую fun, т.е.

"fun"+1 - преобразуется в "fun1" и вызывает fun1();
"fun"+2 - преобразуется в "fun2" и вызывает fun2(); и.т.д.
}

Естественно, напрямую это не сделать. Может, кто-нибудь подскажет вариант решения проблемы?
Это элементарно решается с помощью switch(), но функций - 100 штук, так что придется писать 100 case
Можно использовать массив(или вектор) указателей на функции, но и в этом случае придется эти 100 функций заносить туда вручную, т.е. array_fun[]={fun1, fun2,........fun100};

ПО-встроенное. Компилятор - Linux, без сторонних библиотек(типа boost и др.), только средствами C/C++.
И еще! Выбор функции должен происходить во время исполнения, поэтому макросы не годятся!!!

Добавлено: 27 авг 2004, 13:53
DeeJayC
Создаём массив функций и вызываем по индексу.

Добавлено: 27 авг 2004, 19:34
Romeo
Выход один - только массив указателей на функции. По другому никак. В любом случае нужно иметь привязку к указателю на функцию для того, чтобы её вызвать. Сделать call по имени не возможно даже с логической точки зрения: в релизных экзышниках имена функций отсутствуют (есть только их адреса).