Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们如何制作C++;程序自行修复超出范围的数组索引? 我想使用一些不是我编写的C++代码。 但是,代码中有很多数组索引超出范围。 此外,阵列的长度可能不是固定的;例如,它们可以由输入图像的大小确定_C++_Arrays_Indexoutofrangeexception - Fatal编程技术网

我们如何制作C++;程序自行修复超出范围的数组索引? 我想使用一些不是我编写的C++代码。 但是,代码中有很多数组索引超出范围。 此外,阵列的长度可能不是固定的;例如,它们可以由输入图像的大小确定

我们如何制作C++;程序自行修复超出范围的数组索引? 我想使用一些不是我编写的C++代码。 但是,代码中有很多数组索引超出范围。 此外,阵列的长度可能不是固定的;例如,它们可以由输入图像的大小确定,c++,arrays,indexoutofrangeexception,C++,Arrays,Indexoutofrangeexception,我没有足够的预算来手动修复它们,所以我在这里问这个问题 如果I=a.Length,我希望a[I]可以a[0],但我可以保留代码a[I] 如何创建它?您可以编写一个(模板化)类,该类包装一个数组并重载[]运算符,以执行对底层数组的边界检查访问。然后可以使用这个类而不是普通的C数组 这项工作的可行性在很大程度上取决于应用程序如何使用数组。如果数组是gloabl变量或结构/类的一部分,并且只有[]才能访问,那么它将非常有效,但是如果数组通过“降级”传递给指针(请注意,数组参数实际上是指针参数),则需要

我没有足够的预算来手动修复它们,所以我在这里问这个问题

如果
I=a.Length
,我希望
a[I]
可以
a[0]
,但我可以保留代码
a[I]

如何创建它?

您可以编写一个(模板化)类,该类包装一个数组并重载[]运算符,以执行对底层数组的边界检查访问。然后可以使用这个类而不是普通的C数组


这项工作的可行性在很大程度上取决于应用程序如何使用数组。如果数组是gloabl变量或结构/类的一部分,并且只有[]才能访问,那么它将非常有效,但是如果数组通过“降级”传递给指针(请注意,数组参数实际上是指针参数),则需要做更多的工作,更改参数类型并可能创建单独的参数“checked array reference”类将在“checked array”之外使用。

您可能需要尝试使用原始数组初始化的包装器
类,然后使用
运算符[]
按需操作。

您必须执行检查。没有神奇的方法可以做到这一点,特别是如果您谈论的是普通的旧数组,而不是
向量,在这种情况下,您可以
.at()
边界检查由哪一个来完成。您希望如何准确地生成工作代码?它们必须是实际的数组,还是您可以编写自己的边界检查数组类?用bug替换其他bug通常不是一个好主意。(如果您有时间验证您的“修复”)“始终生成正确的结果–您需要验证每个数组访问–您应该有时间修复代码。)如果代码不是由您编写的,并且有很多数组超出范围,那么您可能会遇到比简单的“超出范围”数组更多的问题。