>
>Det er lidt svært at ræsonnere mig frem til hvad du mener >udfra din beskrivelse af opgaven, men jeg tror at de vil have >dig til at teste at din polymorfisme fungerer.
>Du kan ikke oprette en instans af din superklasse. Det >skyldes den ikke er fuldt implementeret, da den har pure >virtual funktioner - MEN - du kan have en pointer, der er af >samme type som din superklasse. Du kan så oprette en instans >af din subklasse og sæt før nævnte pointer til at pege på >den.
>Expr * pBase = new Num(5);
>double d = pBase->eval();
>Du kalder nu funktionen på din superklasse, hvorefter kaldet >via polymorfi bliver dispatched videre til din subklasse og >værdien "5" fra din subklasse bliver returneret af din >superklasse.
>Hth
Hej jess. tak for din besvarelse. jeg glemte at fortæle at det er en c++ opgave. jeg har fulgt dit råd og så vidt jeg forstod ud for din besvarelse har jeg prøvet at implementere dit eksempel på følgende måde:
class Expr
{
public:
virtual double eval()=0;
Expr*pBase;
};
class Num : public Expr
{
public:
double value;
Num(double num5);
virtual double eval();
Expr*pBase = new Num(5);
double d = pBase->eval();
};
problemet er, at når jeg kompiler får jeg følgende fejlmeddelser:
>`new' cannot appear in a constant-expression
>ISO C++ forbids initialization of member `pBase'
dette er blot 2 ud af i alt 10 fejl jeg får. hvis jeg har misfortolket din besvarelse eller gjordt noget forkert, vil jeg meget gerne høre fra dig.
hilsen james