-
تغییر یک متغیر در کلاس فرزند
سلام وقت شما بخیر
در ادامه کار با ابجکتهای گرافیکی میخوام یک خط ترسیم کنم و در ادامه با توجه به مشخصات و وضعیت این خط اکسپرتمو آماده کنم . میخوام این کار با استفاده از کلاس ها انجام بدم .
پس به این ترتیب عمل کردم :
اول : یک کلاس والد رو تعریف کردم و یک متغیر 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 هیچ تغییری نکرد . برای حل این مشکل باید چیکار کرد ؟
برای پاسخ دادن وارد سایت شوید.