对于以下代码:
#include <chaiscript/chaiscript.hpp>
struct Str {};
Str cppfun() { return Str{}; }
int main()
{
chaiscript::ChaiScript chai;
chai.add(chaiscript::fun(&cppfun), "cppfun");
chai.eval(R"(
def MyFun() { return cppfun() }
var x = MyFun()
)");
}
它运作良好。但是,如果我将代码修改如下:
#include <chaiscript/chaiscript.hpp>
struct Str {};
Str cppfun() { return Str{}; }
int main()
{
chaiscript::ChaiScript chai;
chai.add(chaiscript::fun(&cppfun), "cppfun");
chai.eval(R"(
def MyFun() { var res = cppfun(); return res }
var x = MyFun()
)");
}
运行过程中会出现运行时错误。而且我还尝试修改代码如下:
#include <chaiscript/chaiscript.hpp>
struct Str {};
Str cppfun() { return Str{}; }
int main()
{
chaiscript::ChaiScript chai;
chai.add(chaiscript::fun(&cppfun), "cppfun");
chai.eval(R"(
def MyFun() { var x = cppfun(); var y = x }
MyFun()
)");
}
并且在运行过程中还有另一种类型的错误。
所以我猜这是由于用户定义结构的赋值操作指令丢失造成的。有没有人可以告诉我如何修复代码并使其正常工作?非常感谢!