C++定义数组问题..
int fun(const int len)
{
int arr[len];
}
void main()
{
fun(5);
}
fun函数会出错..
传入的参数明明是const, 为什么不能定义数组的大小???
我想实现传入多大参数就定义多大数组..
有除了new, 容器以外的其他办法么??
[解决办法]
可以这样
[解决办法]
顶!
------解决方案--------------------
template<typename T, int size>
int GetArrLength(T(&)[size]){return size;}
[解决办法]
抱歉,题目没看清楚
template<typename T, int N>
void fun()
{
T data[N];
}
不严谨的说,只要是template,一定是编译期间可推算出来的东西
[解决办法]
其实我只想说“谁告诉你只要是const就可以用来定义数组的大小”?
[解决办法]
楼主没有明白const的含义,const定义的并不是常量,而是只读变量,你怎么能用变量去定义数组的大小呢?
[解决办法]
楼主搞混的地方大概在这里?
这样是可以的,因为编译器可以在编译期间推导出num
int const num = 5;
int b[num];
//这样是不行的,因为
void fun(int const num)
{
int b[num];
}
int main()
{
for(int i = 0; i != 10; ++i)
{
fun(i);//i不是常数
}
return 0;
}
而且,其实
void fun(int num);
和
void fun(int const num);
的宣告是一样的,不构成overload