hjælp til lommeregner

Tags:    c++

hej

jeg er i gang med at udvikle en lommeregner i c++, og jeg er nået til et punkt hvor jeg skal til at udvikle de binære operator, men jeg har problemer med at implementere dem. min headerfil ser således ud:

using namespace std;

class Expr
{
public:

virtual double eval()=0;

};

class Num : public Expr
{
public:


double value;

Num(double num5): value(num5)
{
cout<<"num5 ="<<num5<<endl;
}

virtual double eval() {return value;}

};

class BinOp
{
public:
class Plus
{
public:

Plus()
{
}
};

};

og min cpp fil ser således ud:

using namespace std;

int main()
{

vector<Expr*>expression;

Num num5(5);

Expr *expr=new Num(5);
cout<<"expr5 ="<<expr->eval()<<endl;
delete expr;

Num num2(2);



system ("PAUSE");
return 0;
}
klassen Num skal indeholde de værdier som sendere skal regnes ud. klassen Expr skal evaluere udtrykkene fra Num. klassen BinOp skal indeholde alle operatorne plus, minus, gange og dividere. alle operatorne skal have deres egen klasse. først skal jeg starte med at implementere Plus operatoren. ifølge opgaven skal Plus operatoren lægge tallene fra objekterne i main sammen, så man i main får et udtryk der kommer til at se såldes ud:

Plus plus2_5( &num2, &num5 );

problemet er at jeg ikke ved hvordan man i Plus laver en funktion hvis variabler er pointere til variabler der er af typen Num.

jeg vil meget gerne høre, hvis der er nogen der har et forslag til hvordan Plus klassen skal implementeres, således at jeg kan skrive overstående udtryk i min main funktion:




Du kunne lave BinOp sådan:
Fold kodeboks ind/udKode 

De andre funktioner (*/-) burde være simple.

Og et lille test program:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 01.05.2008 14:59 af Bruger #4996
Du kunne lave BinOp sådan:
Fold kodeboks ind/udKode 

De andre funktioner (*/-) burde være simple.

Og et lille test program:
Fold kodeboks ind/udKode 


hej Bertel. tak for din besvarelse. jeg har prøvet at implementere din kode, og det fungere som forventet. tak for hjælpen.




t