more elegant solution
I have a struct, that has a lot of double variables. (only doubles,
assume). Now, each variable has a different "default" value, which is
set in Init function.
So, is there any better way of checking wheter mystruct.myvalue has
the default value set than this:
# # #
// a class for checking each member
struct SuperClass
{
virtual void Init() =0;
// that's the main thing
template <class T> bool IsStd(const T& type, const double* pD)
{
// create a new one and initialize with defaults
T t; t.Init();
// see if the double at the offset:
// &t + (pD-this) == *pD
return (*(double*) ((char*)&t + ((char*)pD - (char*)this)) == *pD);
}
};
// that's just a struct with members
struct test : public SuperWalls
{
test() {Init();}
void Init() {m_a=1; m_b=2; m_c=3;}
double m_a, m_b, m_c;
};
int main(int, char**)
{
test t;
t.m_c = 5;
// check for defualts
printf("%d, %d\n", t.IsStd(t, &t.m_b), t.IsStd(t, &t.m_c));
}
# # #
I wish I could just write:
t.IsStd(&t.m_b);
or even better:
IsStd(&t.m_b);
but without using a macro.
Thank you,
-Gernot
int main(int argc, char** argv) {printf
("%silto%c%cf%cgl%ssic%ccom%c", "ma", 58, 'g', 64, "ba", 46, 10);}
________________________________________
Looking for a good game? Do it yourself!
GLBasic - you can do
www.GLBasic.com