Сгенерировать имя функции
Добавлено: 27 авг 2004, 11:35
Здравствуйте!
Эта проблема, наверное, решена не одним программистом.
Есть функции 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++.
И еще! Выбор функции должен происходить во время исполнения, поэтому макросы не годятся!!!
Эта проблема, наверное, решена не одним программистом.
Есть функции 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++.
И еще! Выбор функции должен происходить во время исполнения, поэтому макросы не годятся!!!