Saturday, 28 September 2013

Compile-time Base class pointer offset to Derive class

Compile-time Base class pointer offset to Derive class

class Base1 {
int x;
};
class Base2 {
int y;
};
class Derive : public Base1, public Base2 {
public:
enum {
PTR_OFFSET = ((int) (Base2*)(Derive*)1) - 1,
};
};
But the compiler complains
expected constant expression
Everyone knows that the expression values 4 except the compiler, what goes
wrong?
How, then, to get the offset at compile time?

No comments:

Post a Comment