2014-02-05 4 views
0

Извините, что я совершенно не знаком с C++, только что начавшимся в этом семестре. У меня есть вопрос. Я знаю javascript, что-то хорошее, и мне нравится, как он свободен как язык программирования. (Это хорошо и плохо.) Но есть одна вещь, которую вы можете сделать в javascript, я не уверен, что вы можете сделать это на C++.Функции вызова C++ из массива функций

Я хочу вызвать некоторые функции из массива функций здесь, это ссылка того, что сделано в javascript. Javascript Array of Functions. Моя идея - написать цикл for, который будет выполнять функции в том порядке, в котором я хочу. (от первого до последнего.) Если есть альтернатива этому, я буду в порядке с этим. Я мог бы даже назвать функции с числом после них, как функция1, например, если это может помочь. Я не уверен, что это возможно, но любая помощь или что-то было бы огромной благодарностью.

+2

Да! Это возможно с помощью [указателя функции] (http://en.wikipedia.org/wiki/Function_pointer) – yizzlez

+0

@awesomeyi Сладкое спасибо за быстрый комментарий. – John

ответ

3

Вы говорите о "function pointer"?

void f1() { .. } 
void f2() { .. } 
void f3() { .. } 

typedef void (*pf)(); 

pf arf[3] = { f1, f2, f3 }; 

arf[0](); 
+0

Эй, большое вам спасибо, что это сработает отлично. :) – John

2

Если вы не хотите использовать указатель на функцию

struct parent 
{ 
    virtual void f(); 
} 

struct child1 : parent 
{ 
    void f(){}; 
} 

struct child2 : parent 
{ 
    void f(){}; 
} 

struct child3 : parent 
{ 
    void f(){}; 
} 

. 
. 
. 

struct childn : parent 
{ 
    void f(){}; 
} 


parent array = {child1,child2,child3,.....,childn}; 

array[n].f(); 

each child classes will contain different implementations of f(), so you can 

create an array of child structs and invoke the methods through the for loop. 
Смежные вопросы