darthcookie
Member
- Joined
- Aug 2, 2009
- Messages
- 104
Hallo Leute, ich lern gerade C++ und verzweifle an den Zeigern. Ich hab mir eine Klasse geschrieben, die einen Dezimalbruch speichern soll (und möglichst viele Zeiger benutzt, ich wills ja lernen^^) und mir ein Programm zum testen geschrieben. Es müsste eigentlich 1/2 und 3/4 addieren, aber wenn ich mir die Werte ausgeben lasse ist der 1. Bruch (abc) 9/9, der 2. (def) 0/0 und der 3. (ghi) auch 9/9. (Bitte keinen Kommentar zu den Variablennamen, ist nur nen Testprogramm ) Hier ist der Code
Code:
<i>
</i>#include <iostream>
using namespace std;
class Frac
{
public:
Frac(long num = 1, long denom = 1)
{
numerator = new long(num);
denominator = new long(denom);
}
~Frac()
{
delete numerator;
delete denominator;
}
long getNum()
{
return *numerator;
}
long getDenom()
{
return *numerator;
}
void setNum(long num = 1)
{
numerator = #
}
void setDenom(long denom = 1)
{
if (denom != 0)
{
denominator = &denom;
}
}
Frac* operator+(Frac sum)
{
*numerator = (*numerator * sum.getDenom())+(sum.getNum() * *denominator);
*denominator *= sum.getDenom();
return this;
}
protected:
private:
long *numerator;
long *denominator;
};
int main()
{
Frac *abc = new Frac(1,2);
Frac *def = new Frac(3,4);
Frac *ghi = new Frac();
ghi = *abc + *def;
cout << abc->getNum() << endl;
cout << abc->getDenom() << endl;
cout << def->getNum() << endl;
cout << def->getDenom() << endl;
cout << ghi->getNum() << endl;
cout << ghi->getDenom() << endl;
return 0;
}