انجام تمام عملیات های struct بر روی یک متغیر بدون تعریف operator ها - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۳۳۵ نفر آنلاین
۱۳۴ عضو و ۲۰۱ مهمان در سایت حاضرند

انجام تمام عملیات های struct بر روی یک متغیر بدون تعریف operator ها

+2 امتیاز

سلام من یک struct دارم یک متغیر int داخلش هست بعد به این شکل تعریف کردم :

struct Foo
{
//do all operations on number
    Foo& operator +(int num);
    Foo& operator +=(int num);
    Foo& operator -(int num);
    Foo& operator -=(int num);
    Foo& operator *(int num);
    Foo& operator *=(int num);
private:
bool flag;
int number;    
};

Foo f;
f+=1;
f-2;

می خواستم بدونم این جور وقت ها راه ساده تری برای این کار نیست که قرار نباشه این همه کد نوشت ؟؟

 

سوال شده خرداد 28, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

1 پاسخ

+1 امتیاز

سلام شما میتونین از type cast operator استفاده کنین و number رو بصورت refrence برگردونین :

کار این operator اینه که وقتایی که لازم باشه بصورت خودکار شی کلاس رو به مقدار مورد نظر تبدیل میکنه .

مثلا برای کد شما به این شکل میشه :

#include <iostream>

struct Foo
{
    operator int&(){return number;}//convert explicitly to int
    int number;
    bool flag;
};

int main()
{
    Foo f;
    f.number=5;   
    f+=2;//ghabl az mohasebe f be int tabdil mishe va += anjam mishe
    f*=6; 
    std::cout<<f.number;
}

 

پاسخ داده شده خرداد 28, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده خرداد 28, 1393 بوسیله ی BlueBlade
...