خطا در override کردن متد virtual - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

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


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

خطا در override کردن متد virtual

+1 امتیاز

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

چرا وقتی در کلاس B متد test را overide می کنم خطا میده نیاز دارم که در کلاس B از Parent2 استفاده کنم علت خطا چیه دوستان؟

class Parent1 { };

class Parent2{};

class A {
public:
	virtual Parent1* test(){ return nullptr; }
};

class B : public A {
public:
	

	Parent2* test() {
		return nullptr;
	}
};

 

سوال شده دی 12, 1393  بوسیله ی hojat1 (امتیاز 875)   12 69 99

1 پاسخ

+2 امتیاز
 
بهترین پاسخ
1-  اینکه نوع برگشتی توابعی که override میشن باید با نوع تابع در کلاس پایه یکسان باشه.

2-  در صورتی هم که قصد داشته باشید که توابع override شده نوع برگشتی آن کلاسی مشتق شده از کلاس نوع برگشتی کلاس والد باشد می بایست نوع خروجی به صورت رفرنس و اشاره گر باشد

در غیر اینصورت که همانند مثال بالا ، که  نوع  برگشتی متفاوت وجود داره خطای زمان کامپایل دریافت می کنید.
پاسخ داده شده دی 22, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد اردیبهشت 6, 1394 بوسیله ی hojat1
...