1

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

当我的 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 .. 任何建议都会很棒。

谢谢!

4

1 回答 1

2

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

使用 ChaiScript 时,如果您希望 ChaiScript 能够在内部使用结果值,最好的选择就是返回 a std::stringor const std::string &

于 2016-10-09T22:29:57.007 回答