تحتاج إلى الوصول إلى كائن الفئة عن طريق مؤشر وظيفة - ثنائي البحث شجرة الفئة الخلق ذات
-
03-07-2019 - |
سؤال
وإنشاء Traversals لثنائي شجرة البحث مع العودية.
void inOrder(void (*inOrderPtr)(T&))
{
if(this->left != NULL)
inOrder((*inOrderPtr)(this->left));
inOrderPtr(this->data);
if(this->right != NULL)
inOrder((*inOrderPtr)(this->right));
}
وهنا هي وظيفة. الآن هذا خطأ واضح. وتسمى هذه الوظيفة مثل هذا:
first.inOrder(print_vals);
والأول هو كائن، وفال الطباعة مجرد وظيفة التي تقوم بطباعة ما هي البيانات في الكائن. هناك ثلاث قيم لكل كائن، والبيانات، اليسار، واليمين. كيف يمكنني فعلا الوصول إلى تلك العناصر مع وظيفة؟
المحلول
ويبدو أن الدعوة إلى inOrderPtr(this->data)
يمر مجرد عضو data
من عقدة الشجرة إلى وظيفة print_vals
. إذا كنت ترغب في الوصول إلى العناصر left
وright
، استخدم inOrderPtr(*this)
. سيكون لديك لتغيير الإعلانات المختلفة من أجل هذا لتجميع مثل الإعلانات عن inOrderPtr
وprint_vals
. دون رؤية ما تبقى من التعليمات البرمجية فإنه من الصعب القول ما تحتاج لتغييرها ل.
وعلى صعيد آخر، يبدو لي أنك قد ترغب في إرسال دعوات متكررة أكثر من هذا القبيل:
this->left->inOrder(inOrderPtr);
وأنا على صنع افتراضات حول التطبيق الخاص بك، وإن كان.