c++ - ChaiScript 和 STL

标签 c++ stl chaiscript

我正在尝试使用 std::list<arnAddr> (arnAddr 是自定义结构)在 Chai 脚本文件中。 但我在解析过程中遇到错误:

Error: "Missing clone or copy constructor for right hand side of equation" With parameters: (NSt3__14listIN3arn7arnAddrENS_9allocatorIS2_EEEE)`

我将以下内容添加到 chai 解析器:

ChaiScript interpreter;
interpreter.add(user_type<arnAddr>(), "Address");
interpreter.add(bootstrap::basic_constructors<arnAddr>("Address"));
interpreter.add(constructor<arnAddr(const int, const int)>(), "Address");
interpreter.add(constructor<arnAddr(arnIP, arnPort)>(), "Address");
interpreter.add(fun(&Database::getGroup, database), "group"); 
// std::list<arnAddr>& getGroup(); is the prototype

脚本文件非常简单,只包含 var group = group();

我从错误消息中得到的是,Chaiscript 不知道如何复制构造 std::list<arnAddr> 。但我该如何解决这个问题呢?

最佳答案

像这样开始怎么样:

ChaiScript interpreter;
interpreter.add(user_type<arnAddr>(), "Address");
interpreter.add(bootstrap::basic_constructors<arnAddr>("Address"));
interpreter.add(user_type<std::list<arnAddr> >(), "AddressList");
interpreter.add(bootstrap::basic_constructors<std::list<arnAddr> >("AddressList"));

这应该告诉 ChaiScript 有关容器的信息(不,它不会自动添加所有可能的容器 - 特别是需要复制构造函数)

也许您也喜欢这个:

interpreter.add(bootstrap::::standard_library::list_type<std::list<arnAddr> >("AddressList"));

关于c++ - ChaiScript 和 STL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975211/

相关文章:

c++ - 向 MFC CDockingPane 标题栏添加一个按钮

c++ - 为什么我的结构不能有 boost::variant 类型的成员,但可以有 vector<boost::variant> 类型的成员?

C++ 模板复杂图像读取类执行时间慢,声明和实现分离

c++ - 为什么在 std::istream_iterator 上使用的 std::find_if 似乎返回最后一个元素?

c++ - C++ 中缺少标准化命名约定 "standard"

c++ - Mac/c++ 上的 ChaiScript std lib 在运行时寻找 dll

c++ - 在 C++ Builder 2010 中构建 shockwave ActiveX(Flash) 时的几个错误

c++ - 如何概括一个接口(interface)以要求某些元组的返回值?

c++ - 通过用户类型对象为 Chaiscript 变量赋值会产生意外行为

c++ - 将 C++ 对象传递给 ChaiScript 函数