PDA

View Full Version : سوال: این ارور برای چی؟



saleh.hi.62
پنج شنبه 13 خرداد 1389, 08:42 صبح
این برنامه این ارور رو میده مشکل از کجاست؟


error: 'rectangle::~rectangle()' and 'rectangle::~rectangle()' cannot be overloaded



#include <iostream>
using namespace std;
class rectangle{
int *x;
int *y;

public:
rectangle(int a,int b);
~rectangle();

int area()
{
return *x**y;
}
rectangle::rectangle(int a,int b)
{
x=new int;
y=new int;
*x=a;
*y=b;
}
rectangle::~rectangle()
{
delete[] x;
delete[] y;
}

};

int main() {
rectangle rect(2,5);
cout<< rect.area();
}

ztx4
پنج شنبه 13 خرداد 1389, 09:14 صبح
مشکل کد حل شد:



#include <iostream>
using namespace std;
class rectangle{
int *x;
int *y;

public:
// rectangle(int a,int b);
// ~rectangle();

int area()
{
return *x**y;
}
rectangle::rectangle(int a,int b)
{
x=new int;
y=new int;
*x=a;
*y=b;
}
rectangle::~rectangle()
{
delete[] x;
delete[] y;
}

};

int main() {
rectangle rect(2,5);
cout<< rect.area();
}

saleh.hi.62
پنج شنبه 13 خرداد 1389, 09:47 صبح
دوست عزیز با تشکر

اما من این برنامه رو توی یک ویدیو أموزشی دیدم و اونجا این کد کامپایل میشد بدون هیچ مشکلی !!!!

کامپایلر dev c++ بود.
قضیه چی؟

mohsensaghafi
پنج شنبه 13 خرداد 1389, 11:34 صبح
سلام دوست عزیز.
مشکل در شکل پیاده سازی متد ها هست.
زمانی از prototype متد استفاده می شه که نخوای همون جا تو تعریف کلاس متدت رو پیاده سازی کنی.

saleh.hi.62
جمعه 14 خرداد 1389, 07:24 صبح
سلام دوست عزیز.
مشکل در شکل پیاده سازی متد ها هست.
زمانی از prototype متد استفاده می شه که نخوای همون جا تو تعریف کلاس متدت رو پیاده سازی کنی.

دوست عزیز آخه اینا سازنده و مخرب هستن نه تابع !!!

mohsensaghafi
جمعه 14 خرداد 1389, 12:24 عصر
دوست عزیز آخه اینا سازنده و مخرب هستن نه تابع !!!

سلام دوست عزیز.
مگر سازنده و مخرب خودشون نوعی از تابع نیستند؟!!!!!!!!