在成员dynamic_bitset上使用 boost::from_block_range 时出错,但在本地dynamic
Error using boost::from_block_range on member dynamic_bitset, but not on local dynamic_bitset
>我正在尝试将std::vector<uint8_t>
转换为boost::dynamic_bitset
。我可以使用以下代码实现与此相反的结果,其中values
是一个定义为boost::dynamic_bitset<uint8_t> values
.
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<uint8_t>
(,则会出现以下编译器错误:
error: no matching function for call to ‘from_block_range(std::vector<unsigned char>::iterator, std::vector<unsigned char>::iterator, const boost::dynamic_bitset<unsigned char>&)’ boost::from_block_range(payload.begin(), payload.end(), values);
您的decode
方法被标记为const
,但您正在尝试修改类成员变量values
。
删除const
或标记values
mutable
例如:
#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();
}
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- 在成员dynamic_bitset上使用 boost::from_block_range 时出错,但在本地dynamic