【发布时间】:2015-07-16 03:44:16
【问题描述】:
普通函数(比如 printArray)采用数组及其大小(2 个参数)来打印数组的元素。
如何使用异常来做同样的事情?更准确地说,如何将数组大小传递给 catch 处理程序? (假设我没有在 try-catch 之外声明 const int SIZE) 例如。
//void printArray(int* foo ,int size);
int foo[] = { 16, 2, 77, 40, 12071 };
//printArray(foo,5); //OK, function call using array accepts size=5
try{
//do something
throw foo;
}
catch (int* pa)
{
//I have to get array size to loop through and print array values
// How to get array size?
}
提前谢谢你
【问题讨论】:
-
如果函数需要数组,为什么在 try 块中你初始化了它? int foo[] = { 16, 2, 77, 40, 12071 };
-
投一个
std::vector。 -
@Ashot - 抱歉,假设 int foo[] = { 16, 2, 77, 40, 12071 };在尝试 {.我在上面编辑了代码。谢谢杰瑞,是的向量确实有效,但我很想知道是否可以使用基本的 c++ 数组来获取数组大小
-
请注意,如果 catch 处理程序位于数组之外的另一个函数中,并且数组是本地非静态变量,则堆栈展开将在您到达处理程序之前破坏数组。如果数组在同一个函数中,无论如何你都应该知道大小。
标签: c++ arrays exception-handling