2011-04-26 55 views
1

我正在使用自然語言的解析器。來自自然語言的單詞被解析爲它們所代表的概念。其目的是允許機器人解釋以自然語言給出的命令。執行這些命令的一種方法是創建大量的if語句,這些語句將變爲每個概念的東部語句。我想知道是否有一種方法來檢索一個函數指針,該指針指向一個名稱以字符串形式存儲的函數。然後,每個概念可以包含一個字符串,表示如果該概念出現在解析中,則需要執行的函數。這種方式這個概念已經知道該怎麼做。C++獲取函數指針或使用存儲在字符串中的函數名稱來評估函數

+1

見[這個問題](http://stackoverflow.com/questions/630920/store-pointers-to-member-function-in-the-map)。 – jonsca 2011-04-26 03:49:03

+0

@jonsca:或者看看[這個答案](http://stackoverflow.com/questions/746604/bind-pointer-to-member-operators-in-c/746653#746653)稍微更易讀的例子。 (免責聲明:我寫了那篇文章。) – 2011-04-26 03:57:22

+0

@Chris當然。這恰好是第一個出現的人之一。另外,誰想要可讀? ;) – jonsca 2011-04-26 04:03:48

回答

0

這並不複雜。我會嘗試(理論上,當然)執行這些「可能」的解決方案之一:

  1. 這是非常C++:閱讀Instantiate class from name?,併爲每一個「自然」語言的類,確保這些類來自一個通用接口,並且每個類都有重寫的方法來處理特定的單詞。

  2. 這是更多的C:如果你不害怕使用共享庫,創建一個共享庫,所有你想要的命令的功能,確保函數名稱匹配的「單詞」,然後只加載您要使用的特定功能(單詞)。這比上面的更容易,因爲你不需要知道所有的單詞,而且維護也較少。

乾杯

相關問題