函数从struct children中调用

时间:2013-12-12 13:04:10

标签: c++ function struct

我为程序的“模块”定义了一个结构。我想按名称搜索模块,然后运行自定义函数,具体取决于模块的名称。 我尝试用结构来实现这个目的:

struct module{
string name;
int number;
string task;
void run(void){
    ?
    }
} Modules[2];

所以现在我想为Modules [1]分配名称和编号,并定义一个由Modules [1]调用的函数。 例如: 如果输入等于Module [0]的名称,则应调用function_1(),如果它等于Module [1]的名称,则应调用function_2()。

我想为结构的每个子节点调用一个不同的函数。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

Function Pointers听起来就像你在寻找的东西。

您可以在结构中添加一个存储函数地址的变量。然后,您可以访问结构数组中的每个项目并调用其自定义函数。

试试这个例子:

void foo1()
{
  printf("foo1");
}

void foo2()
{
  printf("foo2");
}


int _tmain(int argc, _TCHAR* argv[])
{
  struct module{
    string name;
    int number;
    string task;
    void (*pFoo)();
  } Modules[2];

  Modules[0].pFoo = foo1;
  Modules[1].pFoo = foo2;

  Modules[0].pFoo(); // calls foo1();
  Modules[1].pFoo(); // calls foo2();

  return 0;
}

您会看到您可以为每个Modules[x]指定一个指向不同功能的指针,然后您可以在找到所需的Modules[x]名称时调用它们。