سوالات برنامه نویسی

سوال بپرسید, جواب بگیرید و با انجمن های ما در سرتاسر دنیا در ارتباط باشید.

آکادمی ایران ام کیو ال انجمن سوالات MQL5 تغییر یک متغیر در کلاس فرزند

  • تغییر یک متغیر در کلاس فرزند

    نوشته شده توسط بهزاد در 2024-03-09 در 12:48 ب.ظ

    سلام وقت شما بخیر

    در ادامه کار با ابجکتهای گرافیکی میخوام یک خط ترسیم کنم و در ادامه با توجه به مشخصات و وضعیت این خط اکسپرتمو آماده کنم . میخوام این کار با استفاده از کلاس ها انجام بدم .

    پس به این ترتیب عمل کردم :

    اول : یک کلاس والد رو تعریف کردم و یک متغیر x بصورت پروتکتد تعریف کردم

    در کلاس فرزند 1 محاسبات مروبوط به کشیدن خط رو انجام دادم و مقدار نهایی رو در متغیر x بارگذاری کردم

    دوم: در کلاس فرزند 2 متغیر x رو استفاده کردم به عنوان پارامتر ورودی تابع و کارهایی روی این متغیر انجام دادم . انتظار داشتم که متغیر x مقدار خودش رو که در کلاس فرزند1 به دست اورده حفظ کرده باشه و در کلاس فرزند 2 این تغییرات دیده بشه اما در عمل اینطور نبود و مقدار x همون مقدار 0 اولیه بود .

    من این مشکل رو به شکل ساده در این مثالی که در ادامه می نویسم مطرح میکنم چون کدهای اکسپرتم خیلی زیاده و نوشتنشون کمکی به حل مشکل نمیکنه . اگر محبت کنید و راهنمایی کنید باز هم از شما ممنون میشم .

    کد :

     #include <iostream>

    class parent {

    protected:

    int x;

    public:

    parent() : x(0) {}

    void pprint(void){

    std::cout << “Final value of x in parent class: ” << x << std::endl;

    }

    };

    //———– child1 —————-

    class child1 : public parent {

    public:

    void changeX() {

    x = 20;

    std::cout << ” x in child1 class is: ” << x << std::endl;

    }

    };

    //———– child2 —————-

    class child2 : public parent {

    protected :

    public:

    void multiplyX() {

    x *= 2;

    std::cout << ” x in child2 class is: ” << x << std::endl;

    }

    };

    int main() {

    child1 c1;

    child2 c2;

    parent P1 ;

    c1.changeX();

    c2.multiplyX();

    P1.pprint();

    return 0;

    }

    مقدار نهایی این مثال که در یک کامپایلر c++  اجرا کردم به شکل زیر هست : 

    x in child1 class is: 20

    x in child2 class is: 0

    Final value of x in parent class: 0

    همونطور که مشخصه مقدار x هیچ تغییری نکرد . برای حل این مشکل باید چیکار کرد ؟

    بهزاد پاسخ داد 1 ماه، 1 هفته پیش 2 اعضا · 2 پاسخ ها
  • 2 پاسخ ها
  • حسین

    مدیر کل
    2024-03-10 در 7:00 ب.ظ

    سلام ،در بخش ام دوره ام کیو ال 5 در این باره توضیح داده شده/

    دوره ام کیو ال 5 سریع

  • بهزاد

    عضو
    2024-03-12 در 9:32 ق.ظ

    وقت شما بخیر .

    دوره رو تهیه کردم و بخشهای مربوط به کلاس رو دیدم . با اینکه بخش اکسپرت نویس با کمک کلاسها برای من خیلی مفید بود اما راه حل رو پیدا نکردم . متاسفانه مبحث مربوط به کلاس ها خیلی کامل به نظر نمیرسید . مثلا کلاس های فرزند و رابطشون با کلاس والد توضیحی داده نشده. میشه بفرمایید کدوم درس رو باید دوباره ببینم ؟

برای پاسخ دادن وارد سایت شوید.