- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当尝试使用 boost::serialization
序列化派生类时,boost/archive/detail/oserializer.hpp
中的断言(Boost 1.53.0 中的第 436 行) 被绊倒:
const basic_pointer_oserializer * bpos
= static_cast<const basic_pointer_oserializer *>(
boost::serialization::singleton<
archive_serializer_map<Archive>
>::get_const_instance().find(*true_type)
);
BOOST_ASSERT(NULL != bpos);
这是我的 MWE:
#include <iostream>
#include <fstream>
#include <boost/archive/polymorphic_xml_oarchive.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/access.hpp>
#include <boost/serialization/base_object.hpp>
class base
{
friend class boost::serialization::access;
template <class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & boost::serialization::make_nvp("test", test);
}
int test;
public:
virtual void print() { std::cout << 1 << std::endl; }
};
class derived : public base
{
friend class boost::serialization::access;
template <class Archive>
void serialize(Archive &ar, const unsigned int version)
{
ar & boost::serialization::make_nvp("base", boost::serialization::base_object<base>(*this));
ar & boost::serialization::make_nvp("test2", test2);
}
int test2;
public:
void print() { std::cout << 2 << std::endl; }
};
int main (int argc, char const *argv[])
{
base *b = new derived();
std::ofstream stream("out.xml");
boost::archive::polymorphic_xml_oarchive ar(stream);
ar.register_type<derived>();
ar << boost::serialization::make_nvp("b", b);
return 0;
}
我也尝试使用 BOOST_CLASS_EXPORT_GUID
而不是 register_type
,但这也没有用。知道我做错了什么吗?
最佳答案
您可能并不打算使用 polymorphic_xml_archive (see docs) .
值得注意的是,多态存档 与存档的界面有关,与您为其序列化的实体无关(它们始终可以是多态的)。
如果您改用 xml_archive
,问题就会消失。
关于c++ - 派生类 trips 的序列化 Boost 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128578/
为了使我的网络应用程序更可用,我想在应用程序中使用一些分步用户指南,以便用户知道点击什么、何时何地来实现其目标。 所以,经过大量研究,我想出了 trip.js ,它是可设计的并且几乎可定制。但是!当尝
我正在尝试推迟或异步加载 Trip Advisor 小部件,但由于某种原因它不起作用。 我认为异步或延迟可能不起作用,因为 Trip Advisor 脚本随后执行 document.write 命令。
我试图在我的网站中嵌入一个旅行顾问小部件。 Trip Advisor 小部件的代码如下。 但它不起作用,因为它在 chrome 控制台窗口中显示以下错误。 一个阻止解析器的跨站点(即不
我为 this competitive programming problem 写了一个解决方案.它通过了所有测试用例,除了最后一个测试用例差了一个,我不明白为什么。问题可以这样表述:给定一个群体中每
我正在尝试使用 Open Trip Planner 部署解决方案,如果使用 HTTP,一切正常,但显然 HTTPS 连接不起作用。我已遵循官方文档,但没有成功,显然内部服务器正在运行,它记录了预期的
我想知道如何从 Trip Advisor Api 获取特定地点的所有评论。现在我的电话是 http://api.tripadvisor.com/api/partner/2.0/location/SOM
我正在实现此 REST URL 来获取数据 http://api.tripadvisor.com/api/partner/2.0/map/28.5441005,77.2132106?key=
当尝试使用 boost::serialization 序列化派生类时,boost/archive/detail/oserializer.hpp 中的断言(Boost 1.53.0 中的第 436 行)
在我的 Rails 项目中,我有一个功能可以向用户显示他们的 Facebook 好友是否已经在该网站上。验证后,我将他们的 facebook 好友加载到@fb_friends,然后执行此操作: @
假设我这样做: NSManagedObjectContext *context = #a managed object context"; NSString *entityName = #an ent
我有通过 ODBC 访问 MySQL 的 C# 代码。 它创建一个事务,执行几千个插入命令,然后提交。现在我的问题是有多少“往返”,可以这么说,发生在数据库服务器上?我的意思是,它只是将每个插入命令传
我有通过 ODBC 访问 MySQL 的 C# 代码。 它创建一个事务,执行几千个插入命令,然后提交。现在我的问题是有多少“往返”,可以这么说,发生在数据库服务器上?我的意思是,它只是将每个插入命令传
ruamel.yaml 根据它使用的是 safe 还是 round-trip 代表,以不同方式格式化一个简单但嵌套的字典。 我不明白为什么不同的代表应该以不同的方式格式化这样一个简单的字典,所以我想知
在这里找到: http://docs.angularjs.org/guide/introduction 它指出“您可以使用 Angular 开发单页和往返应用程序,但 Angular 主要是为开发单页
更新:正如 Preston 所指出的,以下问题很可能与对象的(反)序列化有关。关于如何优化这个的任何想法? 我目前正在修复旧 JavaEE 应用程序中的一些问题。它使用 EJB 模块和应用程序客户端模
情况 我有很多参数化的 SQL 命令。我在循环中一个接一个地执行这些命令,如下所示: public void SaveChanges() { using (var ts = _Context.
我正在尝试编写一个 Python 脚本来使用 Open Trip Planner (OTP) 构建一个起始目的地矩阵但我对 Python 和 OTP 还很陌生。 我正在尝试使用OTP scriptin
我正在服务器端生成 HTML 标签 (asp.net mvc4)。 我想预先设置 HIDDEN 字段的值和描述,避免使用 ajax 调用来获取 initSelection 函数中的数据。 我见过有人使
SQL 大师,我在练习 SQL 技能时试图解决这个具有挑战性的问题,但是我被卡住了,如果有人能提供帮助,我将不胜感激。 注册被定义为事件表中标记为“sign_up_success”的事件。对于每个城市
我们正在使用 Ruby on Rails 3.2 开发社交网络原型(prototype)。该系统是为旅行者打造的,因此每个用户必然有很多次旅行。我们创建了旅行模型,并分别在旅行模型和用户模型中设置了与
我是一名优秀的程序员,十分优秀!