0

对于以下代码:

#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()
    )");
}

并且在运行过程中还有另一种类型的错误。

所以我猜这是由于用户定义结构的赋值操作指令丢失造成的。有没有人可以告诉我如何修复代码并使其正常工作?非常感谢!

4

1 回答 1

0

解决了这个问题。基本上我需要一个函数来实现克隆行为。多谢你们!

于 2021-05-12T00:26:22.330 回答