使用 chaiscript 将 const char * 作为字符串值返回的建议?

Recommendations for returning const char * as a string value using chaiscript?

运行 今天遇到了一个非常奇怪的 Chaiscript 挑战,我确信它缺乏理解,但我还没有能够解决它。希望 lefticus 或其他人可以对此有所启发。

当我的 C++ class return 调用该方法时 "const char *" 只产生字符串的第一个字符。

"teststring" 会 return "t",等等

class Item{
     const char *getName();
};
chai.add(chaiscript::fun(&Item::getName), "getName");

...

chai.eval("var i = Item(); print(i.getName());");

...

"t"

有没有办法更好地告诉 ChaiScript 我的方法的 return 类型,以便它像对待 char * 一样对待它?也许这只是不受支持,我需要重新编写这些方法才能使用 std::strings。任何建议都会很棒。

谢谢!

ChaiScript 无法(安全地)知道指向个体 char 的指针或指向空终止字符串 char 的指针之间的区别。两者都是有效的可能性,这就是为什么 C++ 核心指南说 * 应该表示 single, optional item only.

如果您希望 ChaiScript 能够在内部使用结果值,那么在使用 ChaiScript 时,您最好的选择就是 return std::stringconst std::string &