hej igen
det her spørgsmål er bare en opfølgning på lommeregnerspørgsmålet stillet tidligere. som nævnt tidligere har jeg puttet de forskellige operatorer ind i hver deres klasse. lommeregneren kan så ved hjælp af objekter af typen Num regne den nye værdi ud. jeg får nu til opgave at regne følgende udtryk ud 2/(3+4). regnestykket 3+4 regner jeg ud ved hjælp af min plus klasse som ser således ud:
class BinOp
{
class Plus
{
public:
*Plus(Num* num1,Num* num2):value(num1->eval()+num2->eval())
{
}
double Get() {return value;}
private:
double value;
};
};
i main kommer det så til at se således ud:
Num num2(2);
Num num3(3);
Num num4(4);
BinOp:
lus plus3_4(&num3,&num4);
problemet opstår når jeg skal dividere udtrykket. der skal jeg i main have et udtryk der ser således ud:
BinOp:
iv div2_7(&num2,&plus3_4);
problemet er bare plus3_4 er ikke af typen Num, men af plus, så jeg får følgende compile error:
no matching function for call to `BinOp:
iv:
iv(Num*, BinOp:
lus*)'
candidates are: BinOp:
iv:
iv(Num*, Num*)
indtil videre har jeg ikke kunne finde en løsning på problemet. jeg har prøvet om kan kunne kaste en if sætning , men har ikke haft held med det. hvis der er nogen der har et forslag til hvordan man få klassen til at regne med nummerværdier (Num) og operator værdier (Plus,Minus,gange og dividere), vil jeg meget gerne høre det.
hilsen james