mem*_*emC 11 c++ stack integer const
我试图在堆栈上为固定大小分配一个整数数组
#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;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会在我N用于定义固定的最后一行给出错误
error C2057: expected constant expression.
但是,如果我定义N为const int N = 10,代码编译就好了.我应该如何将n1其作为一个特征来进行转换const int?
我试过了: const int N = const_cast<const int>(n1)但这给了错误.
编辑:我正在使用MS VC++ 2008编译这个...用g ++编译好.
Jam*_*lis 18
我应该如何
n1将其视为一种const int?
你不能,不是为了这个目的.
数组的大小必须是所谓的积分常数表达式(ICE).该值必须在编译时可计算.甲const int(或其它const限定整型对象)可以在仅当它是本身与整数表达式初始化整数表达式中被使用.
非const对象(如n1)不能出现在Integral Constant Expression中的任何位置.
你考虑过用过std::vector<int>吗?
[注意 - 演员阵容完全没必要.以下两者都完全相同:
const int N = n1;
const int N = const_cast<const int&>(n1);
Run Code Online (Sandbox Code Playgroud)
- 末尾注意事项]
| 归档时间: |
|
| 查看次数: |
24487 次 |
| 最近记录: |