Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以删除联合成员中的复制构造函数吗? 编译C++中的位字段是依赖于实现的,如果不这样做,则它们可能不会按预期编译。不幸的是,在处理要求精确组织位字段的严格标准时(例如在设备之间传输数据时),这是不可取的。我尝试在联合中使用更精确的位字段结构: templ_C++_Unions_C++03 - Fatal编程技术网

我可以删除联合成员中的复制构造函数吗? 编译C++中的位字段是依赖于实现的,如果不这样做,则它们可能不会按预期编译。不幸的是,在处理要求精确组织位字段的严格标准时(例如在设备之间传输数据时),这是不可取的。我尝试在联合中使用更精确的位字段结构: templ

我可以删除联合成员中的复制构造函数吗? 编译C++中的位字段是依赖于实现的,如果不这样做,则它们可能不会按预期编译。不幸的是,在处理要求精确组织位字段的严格标准时(例如在设备之间传输数据时),这是不可取的。我尝试在联合中使用更精确的位字段结构: templ,c++,unions,c++03,C++,Unions,C++03,我可以删除联合成员中的复制构造函数吗? 编译C++中的位字段是依赖于实现的,如果不这样做,则它们可能不会按预期编译。不幸的是,在处理要求精确组织位字段的严格标准时(例如在设备之间传输数据时),这是不可取的。我尝试在联合中使用更精确的位字段结构: template< unsigned char BIT_COUNT , unsigned char OFFSET > struct Bitfield { protected: unsigned char data; /

我可以删除联合成员中的复制构造函数吗? <>编译C++中的位字段是依赖于实现的,如果不这样做,则它们可能不会按预期编译。不幸的是,在处理要求精确组织位字段的严格标准时(例如在设备之间传输数据时),这是不可取的。我尝试在联合中使用更精确的位字段结构:

template< unsigned char BIT_COUNT , unsigned char OFFSET >
struct Bitfield
{
protected:
    unsigned char data;
        // Get and Set Functions
public:
    operator unsigned char () const
    {
        return ( data >> OFFSET ) & ( ( 1 < BIT_COUNT ) -1 );
    }
    Bitfield& operator = ( unsigned char  value )
    {
        const unsigned char mask = ( ( 1 << BIT_COUNT ) - 1 ) << OFFSET;
        data &= ~mask;
        data |= ( value << OFFSET ) & mask;
        return *this;
    }

};

union Bitfield_Test
{
    Bitfield< 8 , 0 > raw;
    Bitfield< 4 , 0 > flagset_1;
    Bitfield< 1 , 0 > flag_a;
    Bitfield< 1 , 1 > flag_b;
    Bitfield< 1 , 2 > flag_c;
    Bitfield< 1 , 3 > flag_d;
    Bitfield< 4 , 4 > flagset_2;
    Bitfield< 1 , 4 > flag_w;
    Bitfield< 1 , 5 > flag_x;
    Bitfield< 1 , 6 > flag_y;
    Bitfield< 1 , 7 > flag_z;
};

void Test()
{
    Bitfield_Test test1;
    test1.raw =      1 << 6;
    test1.flag_a =   1;

    Bitfield_Test test2;
    test2.raw =      0;
    test2.flag_a =   test1.flag_a =   1;
}
template
结构位域
{
受保护的:
无符号字符数据;
//获取和设置函数
公众:
运算符unsigned char()常量
{
返回(数据>>偏移量)&(1<位计数)-1);
}
位字段和运算符=(无符号字符值)
{
常量无符号字符掩码=((1个标志);
位字段<1,1>标志b;
位域<1,2>标志_c;
位字段<1,3>标志\u d;
位字段<4,4>标志集_2;
位域<1,4>标志;
位字段<1,5>标志_x;
位字段<1,6>标志y;
位域<1,7>标志;
};
无效测试()
{
位域测试test1;

test1.raw=1阅读虽然这是一个有用的资源,但我一直在使用Visual Studio 2010,它似乎缺少您文章推荐的C++11功能。我想我可以指定,但我更喜欢将我的问题保持开放式,以便对其他人有所帮助。然后,用C++03或C++98标记您的问题,谢谢您的建议。请阅读我的文章It’这是一个有用的资源,我一直在使用Visual Studio 2010,它似乎缺少你的文章推荐的C++11功能。我想我可以指定,但我更喜欢保持我的问题开放,以便对其他人有所帮助。然后,用C++03或C++98标记你的问题谢谢你的建议。