Re: Variables disappearing from scope when i don't want them to
The Cool Giraffe wrote:
Suppose there's an abstract base class and two inheriting
classes declared as follows.
class Shape {double sizeA;};
class Ellipse : Shape {double sizeB};
'Ellipse' inherits from 'Shape' privately. That means nobody
can use this inheritance except 'Ellipse'.
class Rect : Shape {double sizeC};
Same here. Nobody can use the derivation properties except
'Rect' itself.
In our program we will have a pointer to a shape but we
don't know which one yet. So, we declare it as follows.
Shape *shapy;
Then, i'd like to do this:
shapy = new Ellipse ();
Conversion from 'Ellipse*' to 'Shape' is not allowed, except
in a member of 'Ellipse'.
shapy->sizeA = 4;
shapy->sizeB = 5;
or this:
shapy = new Rect ();
Same here. This conversion requires an _accessible_ base
class. Your 'Shape' is _inaccessible_ in 'Rect'.
shapy->sizeA = 4;
shapy->sizeC = 5;
but, while the first two lines work fine (i.e. the computer
finds the sizeA and can handle the pointers to Ellipse
and Rect),
Huh? I can understand 'shapy->sizeA' would be OK, but conversion
from 'Ellipse*' to 'Shape*' is NOT allowed.
the implementation specific variables are not
reachable. How can i solve this without binding shapy to
Ellipse or Rect explicitly?
There is no way.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask