پیاده سازی pure virtual function در multiple inheritance - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

پیاده سازی pure virtual function در multiple inheritance

0 امتیاز

سلام.

کلاس های من به صورت زیره:

struct EcvRocData{
	virtual void write(fstream& stream) = 0;
	virtual void read(fstream& stream) = 0;
};

struct EcvRocPoint :public cv::Point, public EcvRocData{
	void write(fstream& stream){}
	void read(fstream& stream){}
};

struct EcvMyRocDataPack :public EcvRocDataPack{
	EcvRocPoint point1_, point2_;
}

این خطا را هم دریافت کردم.

cannot instantiate abstract class multiple inheritance

 

چطور میشه متد pure virtual را پیاده سازی کرد؟

 

سوال شده مرداد 28, 1393  بوسیله ی Mad (امتیاز 245)   10 35 47
دوباره تگ گذاری شد مهر 9, 1393 بوسیله ی BlueBlade
کلاس EcvRocDataPack توی کدت نیست .

1 پاسخ

+3 امتیاز
 
بهترین پاسخ

خوب کامپایلر حق داره شما درواقع متدهای read و write را برای EcvRocPoint پیاده سازی کردید و ذکر نکردید که مربوط به کدام کلاس والد هستش و وقتی هم از این کلاس در جای دیگه استفاده کنید در واقع شما دو متد pure virtual را پیاده سازی نکردید در ضمن بایستی برای abstract کلاس ها کلمه virtual را هم قبل public ذکر کنید.کد را به صورت زیر تغییر بدید.

 

struct EcvRocPoint :public cv::Point, virtual public EcvRocData{
    void EcvRocData::write(fstream& stream){}
    void EcvRocData::read(fstream& stream){}
};

 

پاسخ داده شده مرداد 28, 1393 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد شهریور 5, 1393 بوسیله ی Mad
مگه کلاس cv::Pointمتد ابسترکت  read , write داره ؟
نه تا جایئکه من می دونم نداره ولی باید مشخص بشه که متد مربوط به کلاس EcvRocPoint هستش یا مربوط به متدی که در این کلاس قراره برای EcvRocData عملیات overide صورت بگیره.
...