PDA المساعد الشخصي الرقمي

عرض كامل الموضوع : أرجو المساعده في هذا الكود البسيط يوجد به run time error



M.A.F.D
16-04-2009, 13:38
الأستاذ يقول ان الخطأ في OVERLOADING FUNCTION
والمشكله رن تايم ارر
والي يجيب الحل له درجه
وأنا درجتي نازله بالإمتحان وأبغى أجمع درجات:بكاء:

LEFT]
#include <iostream>]
using namespace std;
class squar
{

private:
int *itside;
public:
squar (int a)
{

*itside=a;
}

int getside()const
{
return *itside;
}
squar operator=( const squar& rh)
{
itside=new int;
*itside=rh.getside();
return *this;
}
~squar()
{
delete itside;
}


};



int main()
{
squar a(2);
squar b(8);
a=b;
return 0;
}

[/LEFT]

Desert_Eagle
16-04-2009, 14:17
أضف العلامة & بعد إسم الكلاس في دالة تعريف الأوبيراتور

سبب الخطأ :

دالة الأوبيراتور يجب أن تعيد مرجع ثابت const reference وإلا فإن المترجم سيستمر في نداء الإوبيراتور إلى مالا نهاية

..

M.A.F.D
17-04-2009, 11:20
جربت أحط مثل ماتقول ومازال يطلع رن تايم ارر

Desert_Eagle
18-04-2009, 10:14
جربت أحط مثل ماتقول ومازال يطلع رن تايم ارر


فين حطيت العلامة بالضبط متاكد من مكانها ؟

هذا هو مكانها الصحيح - باللون الأزرق :

#include <iostream>;
using namespace std;
class squar
{

private:
int *itside;
public:
squar (int a)
{

*itside=a;
}

int getside()const
{
return *itside;
}
squar& operator=( const squar& rh)
{
itside=new int;
*itside=rh.getside();
return *this;
}
~squar()
{
delete itside;
}


};



int main()
{
squar a(2);
squar b(8);
a=b;
return 0;
}
ولو لسا في خطأ انسخ رسالة الخطأ أو صورها

..

Zanzibar
19-04-2009, 13:39
أخي ضع
itside=new int; قبل
*itside=a;

أي

squar (int a)
{
itside=new int;
*itside=a;
}

و جرب