当前位置: 首页 > 知识库问答 >
问题:

在成员dynamic_bitstruct上使用BOOST::FROM_BLOCK_RANGE时出错,但在作用域dynamic_bitstruct上不使用

庄兴发
2023-03-14

我正在尝试将std::vector 转换为boost::dynamic_bitset。 我可以使用下面的代码实现相反的结果,其中values是定义为boost::dynamic_bitset 的类成员函数; 值

std::vector<uint8_t> payload;
boost::to_block_range(values, std::back_inserter(payload));

但是,我想不出如何做它的反面。 以下是编译:

void MyClass::decode(std::vector<uint8_t> payload) const
{
    boost::dynamic_bitset<uint8_t> bits(payload.size() * 8);
    boost::from_block_range(payload.begin(), payload.end(), bits);
}

如果将bits局部作用域变量替换为values类成员变量(从所有迹象来看,它们都是完全相同的类型,boost::dynamic_bitset ),则会出现以下编译器错误:

错误:调用“from_block_range(std::vector ::iterator,std::vector ::iterator,const boost::dynamic_bitset &)'没有匹配的函数;

共有1个答案

伍皓
2023-03-14

您的decode方法标记为const,但您正在尝试修改类成员变量values

删除常量或标记可变

例如:

#include <cstdint>
#include <vector>
#include "boost/dynamic_bitset.hpp"

struct foo
{
    void do_the_thing()
    {
        std::vector<uint8_t> payload{1, 2, 3, 4};
        bits = boost::dynamic_bitset<uint8_t>(payload.size() * 8);
        boost::from_block_range(payload.begin(), payload.end(), bits);
    }
    
    boost::dynamic_bitset<uint8_t> bits;
};

int main()
{
    foo f;
    f.do_the_thing();
}
 类似资料:
  • cmake.不为我工作;事情就是这样 原木 RA141@RA141:~$cd~/Vulkan RA141@RA141:~/Vulkan$cd gl_vk_chopper RA141@RA141:~/Vulkan/gl_vk_chopper$cd build RA141@RA141:~/Vulkan/gl_vk_chopper/build$RM-RF./*RA141@RA141:~/Vulkan/g

  • 严重:分派传入RPC调用com.google.gwt.user.client.RPC.SerializationException时出现异常:类型'javax.persistence.noResultException‘未包含在此SerializationPolicy可以序列化的类型集中,或者无法加载其类对象。出于安全目的,此类型将不序列化。:instance=javax.persistence.

  • 我想上传一个图像文件。当我调用我的API上传文件使用postman,得到的错误,如. 我无法将此文件发布到我的Laravel控制器。如何在Laravel中发布文件。有人能帮我解决这个问题吗? 这是我的控制器功能, 在这一行

  • 问题内容: 我在超类中定义了一个变量,并尝试在子类中引用它,但是实例成员上出现错误,无法在类型上使用 它出什么问题了?非常感谢 问题答案: 在下面的示例中可以看到,方法参数的默认值是在类作用域而不是实例作用域上求值的: 没有它将无法编译。 应用于您的案例意味着您必须将用作默认值的属性设为静态: (请注意,是在同一类中还是在超类中定义该属性都与该问题无关。)

  • 问题内容: 我在Swift中创建了一个非常简单的算命应用程序,并且不断遇到的问题。目前,我只是想让该应用程序随机绘制一个字符串,但出现一条错误消息: 实例成员’fortuneArray’不能用于’ViewController’类型 在我声明变量的行上。我已经使用Google一段时间了,但没有找到解决方法。希望有人可以帮助,谢谢! 更新 问题已解决!谢谢。 问题答案: 如果您粘贴的代码未在诸如之类的

  • 因此,在尝试运行我的程序时,我不断遇到此错误: 初始化启动层java.lang.module.FindException时出错:未找到模块javafx.controls 我使用的是带有eclipse的mac,我的VM参数是:--mode-path /Users/myname/Desktop/javafx-sdk-11.0.2_3/lib--add-modejavafx.controls,javaf

  • 我使用在fedora 26上安装了virtualen v 系统同时有python 2.7和python 3.6。 当我创建“virtualenv venv”时,我会得到这个输出和错误。 在/home/as raisingh/venv/bin/python 2中新建python可执行文件< br >同时在/home/as raisingh/venv/bin/python中创建可执行文件< br >安

  • 我正在阅读有关C中线程的教程并测试了以下代码: 我试图使用gcc和g编译此代码,但我总是遇到编译错误。 使用gcc-pthread thread_test.c: /tmp/ccmpQLyp。o: 在函数std::cout'thread_test.cpp: 你能帮忙吗?我必须做些什么才能让这段代码在Linux和Windows上运行吗?