संभव डुप्लिकेट:
why isnt it legal to convert (pointer to pointer to non-const) to a (pointer to pointer to a const)क्यों नहीं कर सकते पूर्णांक ** C++ में स्थिरांक पूर्णांक ** लिए परिवर्तित किया जा
हाय मैं निम्नलिखित कोड है, लेकिन चारों ओर क्यों इस मेरे सिर लपेटो नहीं कर सकते काम नहीं करता - मुझे यह कहते हुए एक त्रुटि मिलती है कि "int ** से const int int ** में कनवर्ट नहीं किया जा सकता है"। हालांकि, अगर मैं printValues के पहले तर्क को "const int * const * myArray" के रूप में बदलता हूं, तो यह सब ठीक काम करता है। मुझे पता है कि शायद मुझे नीचे दिए गए किसी भी का उपयोग नहीं करना चाहिए, लेकिन मुझे समझ में नहीं आता कि यह बिल्कुल संकलित क्यों नहीं होता है। क्या आपके पास मुख्य() में निरंतर घोषित किए बिना एक स्थिर पूर्णांक में पॉइंटर के लिए पॉइंटर नहीं हो सकता है?
#include <iostream>
int printValues(const int ** myArray, const long nRows, const long nCols)
{
for (long iRow = 0; iRow < nRows; iRow++)
{
for (long iCol = 0; iCol < nCols; iCol++)
{
std::cout << myArray[iRow][iCol] << " ";
}
std::cout << "\n";
}
return 0;
}
int main()
{
const long nRows = 5;
const long nCols = 8;
int** myArray = new int* [nRows];
for (long iRow = 0; iRow < nRows; iRow++)
{
myArray[iRow] = new int [nCols];
}
for (long iRow = 0; iRow < nRows; iRow++)
{
for (long iCol = 0; iCol < nCols; iCol++)
{
myArray[iRow][iCol] = 1;
}
}
printValues(myArray, nRows, nCols);
return 0;
}
देखें ["मुझे एक फू ** → फू कॉन्स ** परिवर्तित करने में त्रुटि क्यों मिल रही है?"] (Http://www.parashift.com/c++-faq-lite/const-correctness.html#faq- 18.17) –
क्योंकि यह वास्तव में आपको कॉन्स्ट-शुद्धता का उल्लंघन करने की अनुमति देता है। मैं डुप्ली ढूंढने की कोशिश करूंगा। –
मुझे कभी एहसास नहीं हुआ कि यह इतना लोकप्रिय सवाल था, मैंने जो जवाब देखा है, उनमें से मुझे लगता है [मानक से एक] [http://stackoverflow.com/a/29240053/1708801) सबसे अच्छा है। –