我为程序的“模块”定义了一个结构。我想按名称搜索模块,然后运行自定义函数,具体取决于模块的名称。 我尝试用结构来实现这个目的:
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()。
我想为结构的每个子节点调用一个不同的函数。
有办法做到这一点吗?
答案 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]
名称时调用它们。