دوستان من در ساختن operator در C++ به سه مشکل بر خوردم
1.در operator= باید بصورت زیر کد رو نوشت می خواستم بدونم منظور از ratio& در اول کد چیه و دقیقا چه کاری انجام میده؟
(اون قسمت رو قرمز کردم)
کد:
ratio& ratio::operator =(const ratio& r)
{
num=r.num;
den=r.den;
return *this;
}
2.در مورد اشاره گر this اگه یه توضیحی بدید ممنون می شم که الان دقیقا داره به کجا اشاره می کنه؟!
3.این مشکل یکم عجیبه من operator+ روبصورت زیر پیاده سازی کردم و قاعدتا نباید مشکلی داشته باشه ولی کامپایلر پیغام خطای عجیبی میده که در پایین کدم اوردمش در ضمن من از visual studio 2003 استفاده می کنم.
کد:
#include<iostream>
using namespace std;
class ratio
{
friend ratio operator+(const ratio& ,const ratio&);
public:
ratio(int n=0,int d=1):num(n),den(d){}
ratio& operator=(const ratio&);
void print(){cout<<num<<" "<<den;}
private:
int num,den;
};
ratio operator+(const ratio& x,const ratio& y)
{
ratio z;
z.num=x.num+y.num;
z.den=y.den + x.den;
return z;
}
ratio& ratio::operator =(const ratio& r)
{
num=r.num;
den=r.den;
return *this;
}
int main()
{
ratio x(2,3),y(4,5),z;
z=x+y;
z.print();
cout<<endl;
return 0;
}
خطای اعلام شده
--------------------Configuration: Text1 - Win32 Debug--------------------
Compiling...
Text1.cpp
C:\c++\1\Text1.cpp(5) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1786)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.