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;
}
	
	