मेरे पास निम्न श्रेणी है:
#include & lt; स्ट्रिंग & gt; # शामिल & lt; स्टैक & gt; #include & lt; queue & gt; # नाम स्थान std का उपयोग करके "map.h" शामिल करें; #ifndef CONTAINER_H_ #define CONTAINER_H_ स्ट्रीट PathContainer {int x, y; स्ट्रिंग पथ; }; वर्ग कंटेनर {सार्वजनिक: आभासी शून्य AddTile (स्ट्रिंग, फ़्लोरटाइल *) = 0; आभासी शून्य ClearContainer () = 0; आभासी पथसंचारकर्ता * NextTile () = 0; }; वर्ग स्टैकइंपलिप: सार्वजनिक कंटेनर {निजी: स्टैक & lt; पाथकॉन्टेनइअर & gt; CNTR; सार्वजनिक: StackImpl (); शून्य AddTile (स्ट्रिंग, नेबबरटाइल *); शून्य ClearContainer (); PathContainer * NextTile (); }; वर्ग क्यूइंपलिप: सार्वजनिक कंटेनर {निजी: कतार & lt; पाथकॉन्टेनइअर & gt; CNTR; सार्वजनिक: QueueImpl (); शून्य AddTile (स्ट्रिंग, नेबबरटाइल *); शून्य ClearContainer (); PathContainer * NextTile (); }; #endif
जब मैं StackImpl या QueueImpl ऑब्जेक्ट की तरह ऐसा करने का प्रयास करता हूं:
कंटेनर * cntr; Cntr = नया स्टैकइंपल ();
या
कंटेनर * cntr; Cntr = नया QueueImpl ();
मुझे संकलित करने पर निम्नलिखित त्रुटि मिलती है:
escape.cpp: फ़ंक्शन में 'int main (int, char **)': escape.cpp: 26: त्रुटि: सार प्रकार 'स्टैकआईएमपीएल' कंटेनर के एक ऑब्जेक्ट को नहीं आवंटित कर सकते हैं। H: 23: नोट: क्योंकि निम्नलिखित वर्चुअल फ़ंक्शन 'स्टैकआईएमपीएल' के भीतर शुद्ध होते हैं: कंटेनर। H: 18: नोट: आभासी शून्य कंटेनर :: AddTile (std :: स्ट्रिंग, फ़्लोरटाइल *)
कोई भी विचार?
टाइपिड (नेबबरटाइल *)! = टाइपिड (फ्लोरटाइल *)
। हस्ताक्षर भिन्न होते हैं, इसलिए वे "एक ही" विधि के रूप में भरोसा नहीं करते हैं भले ही नेबरबोइल
से फ़्लोरटाइल
से प्राप्त होता है।
Comments
Post a Comment