繁体   English   中英

在成员 dynamic_bitset 上使用 boost::from_block_range 时出错,但在本地 dynamic_bitset 上没有

[英]Error using boost::from_block_range on member dynamic_bitset, but not on local dynamic_bitset

我正在尝试将std::vector<uint8_t>转换为boost::dynamic_bitset 我可以使用以下代码实现此操作的反面,其中values是 class 成员 function 定义为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 class 成员变量(从所有指示来看都是相同的确切类型, 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 ,但您正试图修改 class 成员变量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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM