C++ 使用存储在字符串中的函数名称获取函数指针或评估函数

Posted

技术标签:

【中文标题】C++ 使用存储在字符串中的函数名称获取函数指针或评估函数【英文标题】:C++ Get a function pointer or eval a function using the functions name stored in a string 【发布时间】:2011-04-26 03:44:30 【问题描述】:

我正在研究自然语言的解析器。自然语言中的单词被解析为它们所代表的概念。目的是允许机器人解释以自然语言给出的命令。执行这些命令的一种方法是创建大量的 if 语句,对于每个概念,这些语句将在东部变成一个。我想知道是否有一种方法可以检索指向名称存储为字符串的函数的函数指针。然后,每个概念都可以包含一个字符串,该字符串表示如果该概念存在于解析中则需要执行的函数。这样,概念就已经知道该做什么了。

【问题讨论】:

见this question。 @jonsca:或者参见this answer 以获得更易读的示例。 (免责声明:我写了那篇文章。) @Chris 当然可以。那个碰巧是最先出现的人之一。另外,谁想要可读? ;) @jonsca,@Chris:感谢您的建议。这些应该工作得很好。 【参考方案1】:

这并不复杂。我会尝试(理论上,当然)实施这些“可能的”解决方案之一:

    这非常 C++:阅读 Instantiate class from name? 并为每种“自然”语言创建一个类,确保这些类派生自一个公共接口,并且每个类都具有覆盖的方法处理特定的词。

    这是更多 C:如果您不害怕使用共享库,请创建一个共享库,其中包含您想要的命令的所有函数,确保函数名称与“单词”匹配,然后只需加载您要使用的特定功能(单词)。这比上面的更容易,因为你不需要知道所有的单词,而且维护更少。

干杯

【讨论】:

以上是关于C++ 使用存储在字符串中的函数名称获取函数指针或评估函数的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个存储指向成员函数的指针的类 (C++)

我无法使用 cin.getline() 从用户那里获取 3 个字符串并使用指针数组来存储它们

C#从返回char指针的c++函数中获取字符串/字符值

C++中怎么获取类的成员函数的函数指针

从 C++ 的成员函数中获取指向成员函数的指针

C++成员函数指针指向全局函数指针