Tôi cố gắng để phân bổ một kích thước cố định trên ngăn xếp để một mảng số nguyênLàm thế nào để chuyển đổi int để const int để gán kích thước mảng trên stack?
#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;
}
Tuy nhiên, điều này mang lại một lỗi trên dòng cuối cùng mà tôi đang sử dụng để xác định một N
cố định
error C2057: expected constant expression
.
Tuy nhiên, nếu tôi xác định N
là const int N = 10
, mã sẽ biên dịch tốt. Tôi nên nhập số n1
như thế nào để truy cập số const int
?
Tôi đã thử:const int N = const_cast<const int>(n1)
nhưng có lỗi.
EDIT: Tôi đang sử dụng MS VC++ 2008 để biên dịch ... với g ++ nó biên dịch tốt.
Chỉ cần thêm chi tiết thêm một: gcc biên dịch nó như là một phần mở rộng - trong thực tế, nó cho phép các biểu thức khác mà không phải là ngay cả khi gần phù hợp, như 'int x (int a) {int b [a]; } ' –
Ah, cảm ơn bạn, @JerryCoffin. Tôi không thấy bản chỉnh sửa khi tôi đăng. –