Шаблонные функции в C ++?Возможно не правильный термин - PullRequest
0 голосов
/ 08 марта 2012

Я не уверен, правильно ли я использую термин, но мне любопытно, есть ли более эффективный способ ведения дел.У меня есть загрузчик файлов, который имеет дело с многочисленными фрагментами (всего около 30).Мой класс усеян:

void fragment_03(char* location, int frag_num);
void fragment_04(char* location, int frag_num);
void fragment_05(char* location, int frag_num);
void fragment_06(char* location, int frag_num);

... и так далее.Есть ли способ лучше объявить эти функции более общим способом, чем писать 30 различных объявлений функций?

Спасибо!

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Я не совсем уверен, что это именно то, что вы хотите сделать, но:

Вам придется объявлять и определять все ваши функции отдельно, но вы можете хранить свои указатели на функции в массиве.

typedef void (fragment_function) (char* location, int frag_num);

frag_function fragment_0, fragment_1, fragment_2; //define functions in cpp file

fragment_function *fragment [] =
{
    fragment_0,
    fragment_1,
    fragment_2
};

Затем определите их так:

void fragment_0(char* location, int frag_num) { /**your definition here*/ }

Чтобы их можно было вызывать по индексу следующим образом:

for(int i=0; i<3; i++)
{
    fragment[i](frag_location[i], frag_num[i]);
}
0 голосов
/ 08 марта 2012

Функции с разными именами и одинаковыми сигнатурами можно вызывать с помощью указателей функций.Или же вы можете выбрать наличие шаблонных функций и специализированных шаблонных функций.

...