C ++ 'da bir ders alıyorum ve bu beni çılgına çeviriyor. Dürüstlük kısmı, hiçbir rehberin bana tam olarak ne yapacağını söylemediği ve hiçbir sorunun buradaki sorunu çözmediği yönündedir. Muhtemelen kısmen birden çok C ++ derleyicisinin sorununa bağlı. Visual Studio 2010 kullanıyorum ve sadece operatör aşırı yüklenme ile bir sınıf oluşturmaya çalışıyorum. Başlığım, sınıfım, ana, vb. Var:
//File Rational.h
#ifndef RATIONAL_H
#define RATIONAL_H
class Rational
{
private:
int numerator;
int denominator;
public:
Rational(int num = 0, int den = 1);
Rational operator+(const Rational &);
Rational operator=(const Rational &);
Rational operator+=(const Rational &);
int getNum();
int getDenom();
};
#endif
Ve sınıf:
#include "stdafx.h"
#include
using namespace std;
class Rational
{
private:
int numerator;
int denominator;
public:
Rational(int num = 0, int den = 1)
{
numerator = num;
denominator = den;
}
Rational operator+(const Rational &r)
{
return Rational(((numerator * r.denominator) + (r.numerator * denominator)), (denominator * r.denominator));
}
Rational operator=(const Rational &r)
{
denominator = r.denominator;
numerator = r.numerator;
}
Rational operator+=(const Rational &r)
{
return Rational(((numerator * r.denominator) + (r.numerator * denominator)), (denominator * r.denominator));
}
Alıcı işlevleri beklediğiniz ve hata vermediğiniz işlevlerdir, ancak yapıcı ve aşırı yüklenmiş yöntemler bana çözümlenmemiş dışını verir. Yöntemlerde ve başlıkta ne kadar denediğimi hatırlayamıyorum bile. Bir düzine kadar rehber ve örnek gördüm ve bunların hiçbiri işe yaramadı. Bunu bir kez + işlenen ile bir arkadaş işlevi olarak derlemek için aldım, ancak atama için bir üye işlevi olması ve bir şekilde yukarıdakilerin tümünü kırmayı başarmış bir üye işlevine taşınması gerekiyor. Burada deliriyorum. Ne yaparsam yapayım bu yöntemleri çözmeyecek!
Ana yöntem, tüm bunları standart biçimde çağırır ve Rational.h dosyasını içerir. Tüm dosyalar aynı dizinde.