Followers 0

# Bitset data access operator problem

## 2 posts in this topic

Hello,

I am in a need of creating a bitset. However I cannot think of any solution how to make an operator that would set the proper bit to true or false in such manner:

[code]
bitset(i)=true;
bitset(j)=false;
[/code]

where i, j are the bits i want to set to proper value.

I have checked BOOST dynamic bitset, however I cannot figure out the soution. I know that I have to use some helper class. This is where I'm stuck. Very simplified, the problem is:

[code]
class Block //helper class
{
public:
int Container;

Block& operator=(bool x) { Assign(x); return *this; }

void Assign(bool x) { x? do_set() : do_reset(); }
void do_set() { Container |= mask; }
void do_reset() { Container &= ~mask; }
};

class bitset
{
public:
int Data[4]; //array of ints - here only 4
int cs; //container size

bitset()
{
cs=sizeof(int)*8;
}

int operator () (int i) const
{
return Data[i/cs] & (1 << (i%cs));
}

int& operator () (int i) //int, bool or whatever, Block?? I have no idea
{
//what do I add here to be able to do substitution like mentioned above?
}
};
[/code]

Thanks in advance for any sugestions,
Misery Edited by Misery
0

##### Share on other sites
I didn't read the code you posted, but I know how to solve your problem. You define an operator()(int)' --although I would prefer operator[](int)', so it looks more like an array-- that returns an object that contains enough information to locate the bit. Something like this:
[code]class BitReference {
unsigned char *byte;
int bit;

// ...
};[/code]

You then define operator=(bool)' for that object in the obvious way. You probably also want to provide an implicit conversion to bool'.
1

##### Share on other sites
Thanks Alvaro :] Edited by Misery
0

## Create an account

Register a new account