كيفية تعريف واجهة في C++؟ الدوال الافتراضية البحتة والفئات المجردة
مرحباً بالجميع! بدأت مؤخراً في تعلم C++ بعد Java، وواجهت مشكلة في تعريف الواجهات. في Java، اعتدت كتابة `interface MyInterface { void doSomething(); }`، ويمكن لأي فئة تنفيذها.
لكن في C++، لا أجد كلمة مفتاحية مشابهة لـ `interface`. جربت إنشاء فئة بدوال افتراضية عادية، لكن المترجم اشتكى من أنه لا يمكن إنشاء كائن من الفئة إذا لم تكن الدالة افتراضية بحتة. إليك ما كتبته:
```cpp
class IShape {
public:
virtual double area(); // خطأ: ليست افتراضية بحتة
virtual void draw(); // خطأ أيضاً
};
```
ثم أضفت `= 0`، وتم تجميع الكود:
```cpp
class IShape {
public:
virtual double area() = 0;
virtual void draw() = 0;
};
```
لكنني لست متأكداً من أن هذه هي الطريقة الصحيحة لتعريف واجهة. هل أحتاج إلى جعل المدمر افتراضياً؟ ماذا عن الوراثة المتعددة؟ وماذا لو أردت أن تحتوي الواجهة على تنفيذ مشترك لبعض الدوال؟
سأكون ممتناً لأي مساعدة!