- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
注意:
Boost 的存档方案基于对称的输入和输出存档类。一直写这两者很乏味,所以我将使用 ?archive
来表示 oarchive
和 iarchive
。
总结:
将自定义存档的基类从 binary_?archive_impl
更改为 text_?archive_impl
后,当编译器实例化 时,我的自定义存档类不再“找到” >serialize(...)
我的其他类中的方法。
背景:
我的应用程序使用 binary_?archive_impl
的子类成功地读取和写入文件到磁盘(文档和/或代码注释建议这优于从 binary_?archive
派生)。我需要从二进制文件格式切换到文本格式,因此我将自定义存档的基类切换为 text_?archive_impl
。那是一切都爆炸的时候。
问题:
我的自定义存档类添加了功能,包括一些在其 Boost 基类中不存在的附加方法;这些方法在我的许多类的 serialize(...)
方法中被调用,它们运行良好。将基类从 binary_?archive_impl
更改为 text_?archive_impl
后,我到处都收到编译错误,提示我的自定义方法不存在 在 text_?archive
中。好吧,这很明显 (!!!),但它们确实存在在我的自定义文件中,并且当我使用时它们很好 Boost 的二进制基类。怎么回事?
我发现了什么,以及我的临时但不受欢迎的解决方案:
在撕掉我的头发并绕圈转了大约一天之后,这就是我发现的......
1) 前段时间(我相信是 Boost 1.34),文件“binary_?archive.hpp”被分成“binary_?archive_impl.hpp”和“binary_?archive.hpp”(后者 #include 前者).这不是对“text_?archive.hpp”完成的。 (因此,我将应用程序的 #include 行从“binary_?archive_impl.hpp”更改为简单的“text_?archive.hpp”。)
2) 如果我将“text_?archive.hpp”分成两部分并#include 仅包含“..._impl.hpp” header ,一切正常。 (但我真的不想修改我的 Boost 安装!)
3) 更仔细地查看这些 header 并稍微摆弄一下,我发现如果我使用原始的、未修改的 header 并注释掉该行
BOOST_SERIALIZATION_REGISTER_ARCHIVE(boost::archive::text_oarchive)
(对于 text_iarchive
也是如此),然后一切再次正常。 (顺便说一句,我自己的存档代码中有类似的行来“注册”我的自定义存档。)
谜团和我的困境:
A) 为什么这些线条的存在会扰乱作品? ...以及为什么删除它们会使事情正常进行? ...我这样做可能会(在不知不觉中)破坏什么?
B) 为什么很久以前“text_?archive.hpp”文件没有与“binary_?archive.hpp”文件分开? (图书馆坏了吗?应该修好吗?)
C) 有什么方法可以修改我的 Boost 安装来解决我的应用程序代码中的这个问题吗?
附言我正在使用 Boost 1.48 和 Visual Studio 2010(64 位)
P.P.S.我想以上所有内容同样适用于 text_w?archive
最佳答案
据我所知,它是 boost serialize 中的一个错误。我们会看到 here.
一)
1. 添加 BOOST_SERIALIZATION_REGISTER_ARCHIVE 和你的新存档不起作用,因为默认的文本存档已经注册 - 似乎只允许注册。
2. 删除它们使其工作,因为只有您的自定义类被注册。
3. 通过删除它们,您已经破坏了使用默认文本存档的能力 - 您的类(class)将被注册。
B)
我相当确定“text_?archive.hpp”文件应该像“binary_?archive.hpp”文件一样被拆分。补丁 boost 任何人?
C)
最好的解决方案是提交一个补丁来 boost 将文件分开。对于临时解决方案,最好的方法可能是将打过补丁的文件放在项目的本地,直到补丁进入 boost。
关于c++ - 从 boost::archive::text_oarchive_impl 和 boost::archive::text_iarchive_impl 派生自定义存档类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691911/
我想用 File::Find 归档所有 txt 文件,删除源文件并删除空目录。 我在使用“$tar->rename( );”重命名文件时遇到困难因为我想从它们的完整路径名中删除它们并仅使用父目录/*.
我试图从一个远程存储库中获取一个目录,但我只想从特定的哈希中获取该文件。如果我使用带有 HEAD 的 git archive 一切正常,但是当我尝试使用特定的哈希时: git archive -v -
无论当前目录如何,我都在尝试归档我的项目。 项目结构 main_folder/ sub1/ sub2/ sub3/ 如果我 cd至 main_folder/sub2/s
我有一个创建 install-tars 的远程裸存储库(无工作目录)。很好用。但是现在我只想为更改的文件创建 tars。我这样试过: git archive --format=tar --prefix
我正在构建自己的 rpm。通常我使用 git archive 从我感兴趣的提交或标签中获取 tarball(假设我放了一个标签 1.0): git archive --format=tgz --pre
如何使用 git archive 创建当前存储库的存档,包括本地未提交的更改? 最佳答案 我知道这是旧的,但我想我找到了解决方案。 运行: stashName=`git stash create`;
当我尝试发布 aab 时,出现此错误。请有人帮助我。我该如何修复它。 点击蓝色链接查看图片 最佳答案 当我使用拖放操作到网络浏览器时,我经常遇到这个错误。 如果我使用页面上的“上传”按钮并使用文件选择
我试图通过使用归档模块从 2 个文件夹中创建 2 个归档。 不幸的是,它无法正常工作,没有任何错误。 我的任务如下所示: tasks: - name: create a tarball of
我不想创建一个没有内部目录结构的“平面”tarball。但我希望顶级文件是“松散的”而不是镜像它们最初所在的目录结构。 考虑: + archives | + data | + site
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Xcode 4 Archive Version Unspecified 你好, 我正在为 iPad 临时部署归档应
我想将 UIWebView 的当前状态保存到 iPhone SDK 中的磁盘。 我有一个 UIWebView,它加载一个包含大量 JavaScript 的网站。我想保存 UIWebView 状态,维护
存档我的 Mac OS 应用程序时,我收到“通用 Xcode 存档”。我读过,可以通过在任何静态库上将 Skip Install 设置为 YES 来解决此问题,但我没有添加任何静态库。我有两个目标和一
可以使用什么组件或方法来指定文件名列表,然后将它们压缩到单个存档中? 我不需要高级功能或任何东西,但如果我可以将一些文件名添加到字符串列表中,然后将这些文件放入 ZIP 中,那就太好了。 我尝试搜索一
我有一个很大的 tar 文件,我分割了。是否可以使用管道来 cat 并解压文件。 类似于: cat largefile.tgz.aa largefile.tgz.ab | tar -xz 而不是: c
我使用 distZip 任务来创建我的发行版。目前发行版名称为“baseName”-“version”.zip。我想将当前时间戳用作分类器,即构建时间。 我尝试使用 distZip { cla
我正在尝试将 MySQL 查询的输出动态写入存档。这是我的代码: var async = require("async"); var mysql = require("mysql"); var exp
也许是个愚蠢的问题,但我的谷歌不起作用。在我的存储库根目录上执行以下操作: $ hg archive my_archive.tar.gz 给我一个 tar.gz 文件,其中包含一个名为 my_ar
[root@c0002242 lfeng]# tar -zxvf/opt/test/ALLscripts.tar.gz -C/opt/test1 tar:这看起来不像 tar 存档 tar:跳到下一个
我的tree命令返回 tmp `-- t `-- e |-- foo.ps `-- s |-- bar.ps `
在编译DLL时,我遇到了许多undefined reference错误,我认为这可能是由于库之间的循环依赖关系引起的。为了解决这个问题,我一直在尝试使用-(文件-)和--start-group文件--
我是一名优秀的程序员,十分优秀!