Re: struct inheritance
On Feb 14, 4:03 am, Kai-Uwe Bux <jkherci...@gmx.net> wrote:
Neill wrote:
Can somebody explain why prog doesn't point to struct NumExp
please?
Huh? How did you tell?
struct Exp_ {};
typedef Exp_* Exp;
struct NumExp : public Exp_
{
int num;
NumExp(int n)
{
num = n;
}
};
int main()
{
Exp prog = new NumExp(10);
return 0;
}
What did this program do (in terms of observable behavior)
that you did not expect?
If you run this program in a debugger and the debugger does
not show the correct dynamic type of *prog, then there could
be a problem with your debugger.
Given a pointer to an Exp_, I don't know how the debugger can
possibly know that the object in question is actually a NumExp.
The types aren't polymorphic (which probably means that the
conversion of the pointer was an error).
If the intent is to use the types polymorphically, Exp_ must
have at least one virtual function. If the intent is to new
objects of the derived type dynamically, and assign the
resulting pointer to a pointer to Exp_, Exp_ almost certainly
needs a virtual destructor.
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34