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

时间:2016-10-07 19:28:15

标签: chaiscript

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

当我的C ++类返回一个“const char *”时,调用该方法只会导致字符串的第一个字符。

“teststring”会返回“t”等等。

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

...

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

...

"t"

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

使用ChaiScript时最好的选择是,如果希望ChaiScript能够在内部使用结果值,只需返回std::stringconst std::string &