2013-12-12 84 views
3

我爲程序的「模塊」定義了一個結構體。我想根據名稱搜索模塊,然後根據模塊的名稱運行自定義函數。 我試圖用一個結構來實現這一目標:從struct children中調用函數

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

所以現在我要指派名稱和編號模塊[1],並定義一個由模塊[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]你想要的名字。