C++ C++;位集<&书信电报;操作员不工作。指向位集变量的指针

C++ C++;位集<&书信电报;操作员不工作。指向位集变量的指针,c++,pointers,bitset,bit-shift,C++,Pointers,Bitset,Bit Shift,我在无序的_映射中有一组位集指针 static unordered_map< size_t, bitset<BITSIZE>* > systemBits; 或 (*位).flip() 返回的位集将所有0翻转为1 有什么好处?为什么移位运算符没有任何作用?因为您没有将结果分配给任何对象。如果你想换一个int,你也会遇到同样的问题 另外,您已经将位集初始化为零,并且任何移位量的零始终为零。明显的问题:POS等于0吗?尽管如此,我还是在两个不同的对象上调用了两次该函数。因此,

我在无序的_映射中有一组位集指针

static unordered_map< size_t, bitset<BITSIZE>* > systemBits;
或 (*位).flip()

返回的位集将所有0翻转为1


有什么好处?为什么移位运算符没有任何作用?

因为您没有将结果分配给任何对象。如果你想换一个int,你也会遇到同样的问题


另外,您已经将位集初始化为零,并且任何移位量的零始终为零。

明显的问题:POS等于0吗?尽管如此,我还是在两个不同的对象上调用了两次该函数。因此,它应该至少以1个移位打印一个位集。但是没有,POS=1;为什么需要分配任务?我直接处理位集。@sidar的原因与int I=3相同;我觉得那是很蹩脚的。(*位)=1
template<typename system>
     static bitset<BITSIZE> & getBitFor() {

    size_t hash = typeid(system).hash_code();

    bitset<BITSIZE> * bit = systemBits[hash];

    if(bit == NULL) {
        bit = new bitset<BITSIZE>(0);
        (*bit) << POS++; // tried *bit << POS++ as well;
        systemBits[hash] = bit;
    }

    return *bit;
}
 (*bit) << POS++;
bit->flip();