以获取以下代码:
#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()
)");
}并且在运行过程中还有另一种类型的错误。
所以我猜这是由于用户自定义结构的赋值操作指令丢失造成的。有没有人可以告诉我如何修复代码并使其正常工作?非常感谢!
发布于 2021-05-12 08:26:22
解决了这个问题。基本上,我需要一个函数来实现克隆行为。谢谢你们!
https://stackoverflow.com/questions/67495518
复制相似问题