今天遇到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 ..任何建议都会很棒。
谢谢!
答案 0 :(得分:2)
ChaiScript无法(安全地)知道指向单个char
的指针或指向空终止char
字符串的指针之间的区别。两者都是有效的可能性,这就是为什么C ++核心指南说*
应该表示single, optional item only。
使用ChaiScript时最好的选择是,如果希望ChaiScript能够在内部使用结果值,只需返回std::string
或const std::string &
。