2013-08-09 27 views
5

की एक सरणी के साथ त्रुटि मुझे सी ++ 11 std::array के साथ कुछ अजीब व्यवहार मिल रहा है। जब मैं std::array<std::tuple<int, float>, 6> myTuples; एक सदस्य चर के रूप में साथ संकलित करने के लिए प्रयास करते हैं, मैं इन त्रुटियों को मिलता है:std :: सरणी अपूर्ण प्रकार त्रुटि std :: tuple

mingw32\4.7.2\include\c++\array:-1: In instantiation of 'struct std::array<std::tuple<int, float>, 6u>':
mingw32\4.7.2\include\c++\array:77: error: 'std::array<_Tp, _Nm>::_M_instance' has incomplete type

मुझे यकीन है कि अगर यह के किसी भी कुछ भी बदल जाता है लेकिन वर्ग उस में है नहीं कर रहा हूँ एक टेम्पलेट वर्ग है एक और टेम्पलेट वर्ग से व्युत्पन्न। टेम्पलेट पैरामीटर एक unsigned int है जो बेस क्लास में संरक्षित std::array का आकार निर्धारित करता है, जिसे मैं व्युत्पन्न कक्षा using Base<param>::m_array; में संदर्भित करता हूं। व्युत्पन्न वर्ग में glm::vec3/dmat4/quat प्रकार हैं, और ओपनजीएल फिक्स्ड फंक्शन glBegin(GL_QUADS); सामान का उपयोग करता है। मैं ओपनजीएल संदर्भ बनाने के लिए एसडीएल-1.2.15 का उपयोग कर रहा हूं। मुझे लगता है कि उनमें से अधिकांश अप्रासंगिक था, लेकिन शायद नहीं। मैं कोड पेस्ट कर सकता था, लेकिन सबकुछ एक दूसरे से जुड़ा हुआ है, इसलिए इसे केवल पूरे के रूप में संकलित किया जा सकता है (जो स्रोतों के बीच वितरित होता है लगभग एक हजार या तो रेखाएं)।

हालांकि, जब मैं this ideone example में इसी पंक्ति को शामिल करता हूं, तो इसी तरह की परिस्थितियों में, यह पूरी तरह से ठीक संकलित करता है। मैंने जांच की कि यह केवल मेरे कंपाइलर (मिनजीडब्ल्यू जी ++ संस्करण 4.7.2) को कमांड लाइन g++ -Wall -std=c++11

के साथ संकलित करके संकलित करके नहीं था, क्या किसी को पता है कि मुझे इन त्रुटियों को क्यों प्राप्त हो सकता है? std::array असाइनमेंट (डिफ़ॉल्ट पैरामीटर के लिए array = {{a,b,c}}; का उपयोग करके) को संकलित करते समय संकलक क्रैश होने से पहले मुझे कुछ समस्याएं थीं, लेकिन इस बार इसकी एक कंपाइलर त्रुटि क्रैश नहीं हुई थी।

+4

क्या आपने '# शामिल किया है '? – dunc123

+3

यदि आप '' शामिल करना भूल जाते हैं तो मैं एक समान त्रुटि उत्पन्न कर सकता हूं। असल में, g ++ 4.7 '/usr/include/c++/4.7/array:77:43: त्रुटि: 'std :: array <_Tp, _Nm> :: _ M_instance' के अपूर्ण प्रकार के –

+0

एक [SSCCE] पोस्ट करें (http://sscce.org/)। – juanchopanza

उत्तर

10

अनुरोध के अनुसार, आप <tuple> शामिल करना भूल गए हैं, इसीलिए संकलक ने अपूर्ण प्रकार की शिकायत की है।

+3

मेरे मामले में मैं '# शामिल ' –

संबंधित मुद्दे