tomas@inmic.se (Tomas Lundstrom) (04/08/91)
A simple question: Assume I have a class hierarchy like this: class base { . . . private: int some_data; public: void some_func (); } class derived : public base { // no more data members . . public: void another_func (); // only a bunch of functions added ... } The derived class introduces NO additional data members. NO virtual functions or multiple inheritance is involved. Now, assume this code fragment including a down cast: base *b = new base; ((derived*)b)->another_func (); // legal and portable ? This is guaranteed to work if an object of class 'base' and 'derived' are of the same size. The question is: is it reasonable to assume that the objects indeed ARE of the same size in all (major) existing implementations ? I want to be sure that this cast works before proceeding in my project. Yes, I know it's ugly, potentially implementation dependent and un-OO, but so is the project I'm in ... :-) :-) thanks in advance, Tomas