
अपरिभाषित प्रतीक: "vtable" और "typeinfo"
प्रदान किए गए कोड में, निम्नलिखित संदेशों के साथ एक लिंकिंग त्रुटि उत्पन्न होती है:
Undefined symbols:
"vtable for Obstacle", referenced from:
Obstacle::Obstacle()in Myworld.o
"typeinfo for Obstacle", referenced from:
typeinfo for RECTANGLEin RECTANGLE.o
typeinfo for CIRCLEin CIRCLE.o
"vtable" और "typeinfo" को समझना
- vtable (वर्चुअल मेथड टेबल): एक डेटा किसी क्लास के वर्चुअल तरीकों के पॉइंटर्स को स्टोर करने के लिए कंपाइलर्स द्वारा उपयोग की जाने वाली संरचना। यह व्युत्पन्न कक्षाओं की वस्तुओं को आभासी तरीकों के सही कार्यान्वयन को कॉल करने की अनुमति देता है।
- typeinfo (रनटाइम प्रकार की जानकारी): ऑब्जेक्ट की मेमोरी में संग्रहीत जानकारी जो ऑब्जेक्ट के प्रकार की पहचान करती है। यह गतिशील प्रकार की जाँच और बहुरूपी व्यवहार को सक्षम बनाता है। -शुद्ध आभासी कार्य। जब कोई क्लास एक शुद्ध वर्चुअल फ़ंक्शन (वर्चुअल शून्य विधि() = 0;) घोषित करता है, तो यह दर्शाता है कि व्युत्पन्न कक्षाओं को कार्यान्वयन को ओवरराइड करना होगा। उनका कार्यान्वयन या तो बेस क्लास या व्युत्पन्न कक्षाओं में होने की उम्मीद है। हालाँकि, यदि ये कार्यान्वयन प्रदान नहीं किए जाते हैं, तो कंपाइलर आंतरिक संरचनाएं (vtable और typeinfo) उत्पन्न करता है जो उन कार्यों पर निर्भर करते हैं। लिंक करते समय, गायब फ़ंक्शंस अपरिभाषित प्रतीक त्रुटियों का कारण बनते हैं। शुद्ध आभासी कार्यों के रूप में। यह व्युत्पन्न वर्गों को इन विधियों को ओवरराइड करने और लागू करने के लिए मजबूर करता है। ऐसा करने से, सही वर्चुअल विधि कार्यान्वयन प्रदान किया जाएगा, और लिंकिंग प्रक्रिया अपरिभाषित प्रतीक त्रुटियों के बिना सफल होनी चाहिए।