c++ - clang++ cannot initialize a variable of type 'int(*)[dim2]' with an rvalue of type 'int (*)[dim2]' -


क्यों कोड

  शून्य fcn (int * twoDArrayPtr, const int dim1, const इंट डिम 2) {इंट (* एरेरेज़) [डीएम 2] = रीइन्टरिप_कास्ट & लेफ्टिनेंट; इंट (*) [डीएम 2] & gt; (दोएड्रारेपीटीटी); } Int main () {वापसी 0; }  

संकलक त्रुटि उत्पन्न

  त्रुटि: प्रकार 'int (*) [dim2]' के एक चर प्रकार को प्रारंभ करने के साथ 'int' (*) [Dim2] ' 

प्रकार समान होते हैं, इसलिए मुझे लगता था कि असाइनमेंट किया जा सकता है। चूंकि int (*) [dim2] आकार के एक सरणी के लिए एक संकेतक है dim2 और चूंकि यह आकार dim2 < / कोड> संकेतक द्वारा अनुक्रमित मेमोरी मेमोरी में, मुझे लगता होगा कि यह काम करना चाहिए।

मैं निम्नलिखित संस्करण की जानकारी के साथ मैक ओएस / एक्स पर चपटा ++ का उपयोग कर रहा हूं:

 Apple LLVM संस्करण 6.0 (क्लैंग -600.0.56) (एलएलवीएम 3.5 एसएसएन पर आधारित) लक्ष्य: x86_64-apple-darwin14.0.0 थ्रेड मॉडल: posix   

dim2 एक संकलन-समय स्थिर नहीं है, और वीएलए (चर-लंबाई सरणियाँ) सी ++ में मौजूद नहीं हैं कुछ अन्य कंपाइलर (जैसे जीसीसी) में सी ++ में वीएलए को अनुमति देने के लिए भाषा एक्सटेंशन होते हैं, लेकिन झगड़ा का व्यवहार मानक-अनुरूप है।

आप एक क्लास (या क्लास टेम्प्लेट) के साथ समस्या के आसपास काम कर सकते हैं जो पता आपके लिए अनुवाद, जैसे कि

  // यह बहुत प्रारंभिक है, लेकिन यह शुरू करने के लिए एक बिंदु है। टेम्पलेट & lt; typename T & gt; क्लास सरणी 2 डी_फ {सार्वजनिक: सरणी 2 डी_फ (टी * पी, एसटीडी :: आकार_टी मंद): डेटा_ (पी), मंद_ (मंद) {} टी * ऑपरेटर [] (std :: size_t i) {वापसी और डेटा_ [i * dim_ ]; } निजी: टी * डेटा_; Std :: size_t dim_; }; ... array2d_ref & lt; int & gt; सरणी (दोडायरेरेपीटी, मंद 2);  

लेकिन मुझे डर है कि पॉइंट-टू-एरे के पास संभव नहीं है (पोर्टेबल) जब तक कि आप समय के संकलन पर सरणी के आयाम को नहीं जानते।


Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -