अपूर्ण प्रकार की अनुमति नहीं है: स्ट्रिंगस्ट्रीम


109

यह पंक्ति त्रुटि क्यों देती है Error: incomplete type is not allowed?

stringstream ss;

आपने कौन सी हेडर फ़ाइलों को शामिल किया है?
एलन स्टोक्स

मुझे लगता है कि वहाँ एक #include<stringstream>या कुछ और मैं इस्तेमाल किया जाना चाहिए था? #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <fstream> #include <ststlib> #include <वेक्टर>
pighead10

जवाबों:


210

#include <sstream> और पूरी तरह से योग्य नाम का उपयोग करें std::stringstream ss;


त्रुटि संभवतः स्ट्रिंगस्ट्रीम के एक सामान्य प्रकार के रूप में परिभाषित होने के कारण अपरिभाषित है।
मिरेज़मा

मुझे लगता है कि दृश्य स्टूडियो कभी-कभी फ़ाइल को शामिल किए बिना स्ट्रिंगस्ट्रीम का उपयोग करने की अनुमति देता है। शायद यह त्रुटि का कारण है
FindOutIslamNow

40

सिस्टम हेडर में से कुछ std::stringstreamपरिभाषा के बिना एक आगे की घोषणा प्रदान करते हैं । यह इसे 'अधूरा प्रकार' बनाता है। यह तय करने के लिए कि आपको परिभाषा को शामिल करने की आवश्यकता है, जो <sstream>हेडर में दी गई है :

#include <sstream>

17

एक incomplete typeत्रुटि तब होती है जब कंपाइलर एक पहचानकर्ता के उपयोग का सामना करता है जिसे वह जानता है कि यह एक प्रकार है, उदाहरण के लिए क्योंकि उसने इसे (जैसे class stringstream;) की एक अग्रगामी घोषणा देखी है , लेकिन इसके लिए पूर्ण परिभाषा नहीं देखी है class stringstream { ... };

यह उस प्रकार के लिए हो सकता है, जिसे आपने अपने कोड में उपयोग नहीं किया है, लेकिन इसमें शामिल हेडर फ़ाइलों के माध्यम से मौजूद है - जब आपने हेडर फ़ाइलों को शामिल किया है जो टाइप का उपयोग करते हैं, लेकिन हेडर फ़ाइल का नहीं जहां प्रकार परिभाषित किया गया है। किसी हेडर के लिए यह असामान्य है कि वह स्वयं उन सभी हेडर को शामिल न करे जिनकी आवश्यकता है, लेकिन असंभव नहीं है।

मानक पुस्तकालय से चीजों के लिए, जैसे stringstreamकक्षा, कक्षा के लिए भाषा मानक या अन्य संदर्भ प्रलेखन या व्यक्तिगत कार्यों (जैसे यूनिक्स manपृष्ठ, MSDN पुस्तकालय, आदि) #includeका उपयोग करके यह पता लगाने के लिए कि आपको इसका उपयोग करने की आवश्यकता है और क्या है। नेमस्पेस यह किसी भी में खोजने के लिए। आपको उन पृष्ठों की खोज करने की आवश्यकता हो सकती है जहाँ वर्ग नाम प्रकट होता है (उदा man -k stringstream)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.