मैं इसचर आकार वस्तु आरंभ नहीं किया जा सकता है
class aClass
{
public:
aClass() : N(5) {}
void aMemberFunction()
{
int nums[N] = {1,2,3,4,5};
}
private:
const int N;
};
की तरह एक वर्ग परीक्षण कोड
int main()
{
aClass A;
A.aMemberFunction();
const int N = 5;
int ints[N] = {5,4,3,2,1};
return 0;
}
है जब मैं (छ ++ 4.6.2 20,111,027) संकलन है, मैं त्रुटि मिलती है
problem.h: In member function ‘void aClass::aMemberFunction()’:
problem.h:7:31: error: variable-sized object ‘nums’ may not be initialized
अगर मैं int nums[N]
के साथ लाइन बाहर टिप्पणी मैं एक संकलन त्रुटि है, तो 012 के लिए इसी तरह के कोड नहीं मिलता हैसरणी ठीक है। N
का मान संकलन समय पर ज्ञात नहीं है?
क्या चल रहा है? nums
क्यों एक चर-आकार का सरणी माना जाता है? एरे nums
और ints
अलग-अलग हैंडल क्यों हैं?
सी ++ सरणी में उनके आकार के लिए निरंतर अभिव्यक्ति की आवश्यकता होती है। यानी यह एक संकलन-समय स्थिर होना चाहिए, लेकिन आपके उदाहरण में एन को शाब्दिक रूप से प्रारंभिक रूप से प्रारंभ किया गया है। – AraK
ध्यान दें कि 'gcc' वास्तव में सी में चर लंबाई सरणियों ++ एक विस्तार के रूप तुम सिर्फ (http://stackoverflow.com/a/27339171/1708801) –