PDA

View Full Version : سوال: صدا زدن تابعی از کلاس فرزند درون کلاس پدر



arbab333
چهارشنبه 15 دی 1395, 22:32 عصر
با سلام
چطور می توان یک تابع از کلاس فرزند را درون کلاس پدر صدا زد؟ مثلا کلاس D فرزند کلاس A است. و تابع C درون کلاس D تعریف شده،و تابع B تو کلاس A تعریف شده. میخاهیم تو تابع B از کلاس Aتابع C را فراخوانی کنیم. چجوری این کار رو کنیم؟؟؟؟؟؟؟؟؟؟؟
class A
{
B()
{
c()
}
}

class D:public A
{
c(){}
}


}

negative60
پنج شنبه 16 دی 1395, 03:45 صبح
به وسیله اشاره گر میتونید این کار رو انجام بدید

حامد مصافی
پنج شنبه 16 دی 1395, 09:28 صبح
تابع رو به صورت virtual تعریف کنید و در کلاس فرزند بازنویسیش کنید.
http://cpp.sh/9yvh

arbab333
پنج شنبه 16 دی 1395, 11:09 صبح
به وسیله اشاره گر میتونید این کار رو انجام بدید

با توجه به مثال ارائه شده چجوری این کار رو بکنم؟؟؟؟؟؟؟

arbab333
پنج شنبه 16 دی 1395, 11:12 صبح
تابع رو به صورت virtual تعریف کنید و در کلاس فرزند بازنویسیش کنید.
http://cpp.sh/9yvh

من میخام تابع B از کلاس پدر اجرا بشه و در انتهای آن تابع C از کلاس فرزند نیز اجرا بشه. فک کنم با virtual نمیشه, اگه میشه کدش چجوریه؟؟؟؟؟؟؟؟

negative60
پنج شنبه 16 دی 1395, 12:43 عصر
class Child;
class Father
{
Child *pChild;


public:
Father(Child *p);
void FatherAnswer();
};




class Child: public Father
{


public:
Child();
void Say(const char *text);
};


Father::Father(Child *p)
{
pChild = p;
}


void Father::FatherAnswer()
{
pChild->Say("salam farzandam :)");
}


Child::Child(): Father(this)
{
//child say:
Say("salam pedar");


//father say:
FatherAnswer();
}


void Child::Say(const char *text)
{
printf("%s\n", text);
}

arbab333
جمعه 17 دی 1395, 01:06 صبح
کدی که نوشتید رو استفاده کردم، درست جواب داد. ممنون:لبخندساده:

حامد مصافی
شنبه 18 دی 1395, 11:54 صبح
من میخام تابع B از کلاس پدر اجرا بشه و در انتهای آن تابع C از کلاس فرزند نیز اجرا بشه. فک کنم با virtual نمیشه, اگه میشه کدش چجوریه؟؟؟؟؟؟؟؟

لینک کد رو گذاشتم. همونجا هم میتونید اجراش کنید