Reset class member variables
Sean Kelly
sean at f4.ca
Fri Sep 7 11:43:59 PDT 2007
mandel wrote:
> Hi,
>
> I have some big classes with lots of member variables
> that need to be reset to theire initial value.
> Therefore I thought about a more reliable way to
> accomplish this, because it's hard to keep track
> of variables I have added.
> It also looks bloated to assign all values manually.
>
> class Foo
> {
> uint x;
> char[] name = "world";
> //problematic:
> const uint y;
> char[1024] buffer;
>
> void reset()
> {
> scope tmp = new typeof(this);
> foreach(i, x; tmp.tupleof)
> {
> this.tupleof[i] = x;
> }
> }
> }
>
> The problem is that I have to avoid
> to try to set const values and static arrays.
>
> How can this be done?
It's a bit horrifying, but this should work:
class Foo
{
uint x;
char[] name = "world";
//problematic:
const uint y;
char[1024] buffer;
void reset()
{
(cast(byte*) this)[0 .. this.classinfo.init.length] =
this.classinfo.init[0 .. $];
}
}
Sean
More information about the Digitalmars-d
mailing list