c++ - How to convert int to const int to assign array size on stack? -
i trying allocate fixed size on stack integer array
#include<iostream> using namespace std; int main(){ int n1 = 10; const int n = const_cast<const int&>(n1); //const int n = 10; cout<<" n="<<n<<endl; int foo[n]; return 0; } however, gives error on last line using n define fixed
error c2057: expected constant expression.
however, if define n const int n = 10, code compiles fine. how should typecast n1 trat const int?
i tried : const int n = const_cast<const int>(n1) gives error.
edit : using ms vc++ 2008 compile this... g++ compiles fine.
how should typecast
n1treatconst int?
you cannot, not purpose.
the size of array must called integral constant expression (ice). value must computable @ compile-time. const int (or other const-qualified integer-type object) can used in integral constant expression if initialized integral constant expression.
a non-const object (like n1) cannot appear anywhere in integral constant expression.
have considered using std::vector<int>?
[note--the cast entirely unnecessary. both of following both same:
const int n = n1; const int n = const_cast<const int&>(n1); --end note]
Comments
Post a Comment