PDA

View Full Version : مبتدی: راهنمایی در مورد ایجاد یک عملگر برای یک کلاس



mojtaba.sln
سه شنبه 07 مهر 1394, 10:26 صبح
سلام و خسته نباشید.
کلاسی نوشتم که عملگر های + و - و * و/ رو براش نوشتم.مثلا برای عملگر + دستور زیر رو وارد کردم:

complex operator+(complex x)
{
complex h;
h.re = re + x.re;
h.im = im + x.im;
return h;
}

حالا می خوام عملگری به صورت نقطه ایجاد کنم که مثلا وقتی نوشته شد a.b یه کاری انجام بده.
مثل بالا نوشتم اما ویژوال استودیو برای همین مورد چندتا ارور می ده ...

دوستان اگه می تونند کمکی کنند ممنون می شم.
پیشاپیش ممنون بابت کمک هاتون

rahnema1
سه شنبه 07 مهر 1394, 13:35 عصر
سلام
تنها عملگرهایی که قابل overload شدن هستند موارد زیر هستند

new delete new[] delete[]
+ - * / % ˆ & | ?
! = < > += -= *= /= %=
ˆ= &= |= << >> >>= <<= == !=
<= >= && || ++ -- , ->* ->
( ) [ ]

Ananas
سه شنبه 07 مهر 1394, 17:57 عصر
سلام.
می تونید برای این کار از تابع با نوع مرجع استفاده کنید:

class TMyClass
{
private:
int __align;
wchar_t * __caption;

public:
int & Align() { return this->__align; };
wchar_t * & Caption() { return this->__caption; };

};

و اینطور بنویسید:

TMyClass * p = new TMyClass();
p->Align() = 15;
p->Caption() = L"Mohammad";

wchar_t wch = p->Caption()[5];
int x = p->Align();