رفع خطای cannot instantiate abstract class - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

رفع خطای cannot instantiate abstract class

0 امتیاز

سلام دوباره.

دو تا کلاس به صورت زیر تعریف کردم آیا راهی نداره که بتونم یک کلاس از نوع Base تعریف کرد؟

class Base{
public:
	virtual void Foo() = 0;
};
class Child :public Base{
public:
	virtual void Foo() override{

	}
};
int main()
{
	Base b ;
	return 0;
}

 

سوال شده دی 11, 1393  بوسیله ی SARA (امتیاز 50)   3 9 15

1 پاسخ

+1 امتیاز
سلام

abstract class همینطور که از اسمش مشخصه یک کلاس چکیده ، بی مسمی و خلاصه هستش که باید در کلاسهای فرزند کامل بشه.  وقتی  یک کلاس کامل نشده نمیشه ازش شی ایجاد کرد. تو این برنامه  از کلاس پدر ارث بری شده و در کلاس فرزند کامل شده اما خود کلاس پدر تغییری نکرده، شما در کلاس پدر یک متد دارید که ناقصه بنابراین اول باید متد کامل بشه بعد از کلاس شی ایجاد بشه. نمیتونه راهی وجود داشته باشه مگر اینکه کلاستون کامل باشه.  متد Foo رو نمیشه تو متد main کامل کرد به خاطر اینکه main خودش هم یک متد هستش و تعریف کردن یک متد تو متد دیگه امکان پذیر نیست.
پاسخ داده شده دی 12, 1393 بوسیله ی امیدوار (امتیاز 872)   21 63 76
ویرایش شده دی 13, 1393 بوسیله ی امیدوار
...