如果尝试在另一个文件中声明一个数组,则会出现cpp错误

时间:2014-04-29 15:51:22

标签: c++ arrays include

我想让我的代码更清晰 - 这就是为什么我创建了一个额外的cpp文件,我声明了一个占用大量空间的数组。

但每当我尝试编译我的代码时,它会说

  

错误c2466:不能为

指定常量大小的数组

(我翻译自德语,所以不要怀疑你是否知道这个错误1by1)

main.cpp中的代码(包含文件)

#include "mapOne.cpp"

mapOne.cpp中的代码:

int point[100][100][2];
point [1][0][0] = 1; [...]

有人能帮助我吗?我讨厌它,如果一个文件是> 400行,只是因为有一个数组声明...

2 个答案:

答案 0 :(得分:0)

您尝试在函数外部为数组赋值,这是不允许的。相反,编译器假定您正在尝试声明一个新数组。

尝试在函数中包装赋值,并在开始使用数组之前调用该函数。

答案 1 :(得分:-1)

您遇到的问题正在发生,因为您没有在您的函数可以使用它的区域中声明该数组。例如,如果我执行以下代码:

在file1.cpp

int array[20];

在file2.cpp

#include "file1.cpp"

int function1()
{
  i = 1;
  for (int x = 0; x<20; x++)
  {
    array[x] = i;
    i = i + 2;
  }
}

无法识别数组[x]。它不被识别的原因是因为即使你使用&#34; include&#34;代码在顶部,您只能包含使用file1.cpp文件中存在的函数的功能。您只被允许使用函数而不是变量的原因仅仅是因为编译器不想混合您在file1.cpp和file2.cpp中声明的变量。这很有道理,因为很多时候你会在不同的文件中声明相同名称的变量,因为它更简单。

然而,您可以做的是在头文件中声明数组。如果在file2.cpp中编写函数,则创建一个名为file2.h的头文件:

在file2.h中:

class file2
{
    public:
    int array[20];///or whichever type of array you want to declare

}

重要的是你要将变量保存在&#34; public:&#34;你可以使用它来完成你在file2.cpp中创建的所有函数。