Ошибка cpp при попытке объявить массив в другом файле
Я хотел сделать мой код более понятным - вот почему я создал дополнительный файл cpp, в котором объявил массив, занимающий много места.
Но всякий раз, когда я пытаюсь скомпилировать мой код, он говорит
ошибка c2466: присвоение массива постоянного размера не может быть
(Я перевел с немецкого, так что не удивляйтесь, если вы не знаете эту ошибку 1by1)
Код в main.cpp
(Включить файл)
#include "mapOne.cpp"
И код в mapOne.cpp
:
int point[100][100][2];
point [1][0][0] = 1; [...]
Кто-нибудь может мне помочь? Я ненавижу, если файл имеет длину>400 строк только потому, что объявлен один массив...
2 ответа
Ваша проблема возникает из-за того, что вы не объявили массив в той области, откуда ваша функция сможет использовать его. Например, если я сделаю следующий код:
В file1.cpp
int array[20];
В файле2.cpp
#include "file1.cpp"
int function1()
{
i = 1;
for (int x = 0; x<20; x++)
{
array[x] = i;
i = i + 2;
}
}
Массив [x] не будет распознан. Причина, по которой он не распознается, заключается в том, что даже если вы используете код "include" сверху, вы включаете только возможность использовать функции, присутствующие в файле file1.cpp. Причина, по которой вам разрешено использовать только функции, а не переменные, заключается в том, что компиляторы не хотят смешивать переменные, которые вы объявляете в file1.cpp и file2.cpp. Это имеет смысл, потому что часто вы объявляете переменные с одинаковыми именами в разных файлах, потому что это проще.
Однако вы можете объявить массив в заголовочном файле. Если вы пишете свою функцию в file2.cpp, вы создаете заголовочный файл с именем file2.h:
В файле2.h:
class file2
{
public:
int array[20];///or whichever type of array you want to declare
}
Важно хранить переменные в разделе "public:", чтобы все функции, которые вы выполняете в file2.cpp, могли использовать его.
Вы пытаетесь присвоить значения вашему массиву вне функции, что недопустимо. Вместо этого компилятор предполагает, что вы пытаетесь объявить новый массив.
Попробуйте обернуть назначения в функцию и вызвать эту функцию перед началом использования массива.