Re[3]: Вызов выполнения функции через динамическое имя
От: EyeOfHell  
Дата: 28.04.07 12:17
Оценка:
День добрый


Это я так с заделом на будущее интересуюсь, для задач когда нужно вызвать функцию у которой имя складывается с двух частей в зависимости от того, что нужно сделать, без написания кучи "if-else if" для всех возможных вариантов.


Это решается другими способами. Можно через полиморфизм, можно просто по справочной таблице, можно еще десятком вариантов. Например, если скорость не нужна (не компилируется, просто для примера):


typedef void (*TFunction)(int);

void ProcessTest(int i_nID)
{
}

void ExecuteTest(int i_nID)
{
}

std::map<std::string, TFunction> g_mTable;
g_mTable["ProcessTest"] = ProcessTest;
g_mTable["ExecuteTest"] = ExecuteTest;


void Test(void)
{
  g_mTable[std::string("Process") + "Test"](1);
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.