كيفية استدعاء طريقة الفئة الأصلية من طريقة معاد تعريفها في C++؟
مرحبًا! أتعلم لغة C++ ولا أستطيع فهم الوراثة. لدي فئة أساسية `Animal` بطريقة افتراضية `Speak()` تطبع "Some generic animal sound". أقوم بإنشاء فئة مشتقة `Dog` تعيد تعريف هذه الطريقة لطباعة "Woof!".
المشكلة هي أنني في طريقة `Speak()` من فئة `Dog` أحتاج أولاً إلى تنفيذ الكود من الفئة الأصلية `Animal::Speak()`، ثم إضافة الإخراج الخاص بالكلب. أحاول استدعاءها مباشرة لكنني لا أستطيع.
هذا هو الكود الخاص بي:
```cpp
#include
using namespace std;
class Animal {
public:
virtual void Speak() {
cout << "Some generic animal sound" << endl;
}
};
class Dog : public Animal {
public:
void Speak() override {
// هنا أريد أولاً استدعاء Animal::Speak()
Speak(); // يستدعي نفسه — تكرار لا نهائي!
cout << "Woof!" << endl;
}
};
int main() {
Dog myDog;
myDog.Speak(); // أتوقع