Размер массива фиксированного размера должен быть указан во время компиляции, что означает, что может использоваться только константа времени компиляции. Вы не можете использовать переменную extern
ed для размера массива, даже если она объявлена как const
, поскольку компилятор просто не знает фактического значения переменной, поскольку она находится в другой единице перевода.
Кроме того, в main.cpp
вы не можете объявить переменную extern
ed как локальную переменную, вместо этого она должна быть в глобальной области.
Для того, что вы пытаетесь делать, нет никакой причины использовать extern
. Просто объявите variable1
с постоянным значением непосредственно в variable.h
, а затем #include
этот файл там, где это необходимо, например:
variable.h:
#ifndef VARIABLE_H
#define VARIABLE_H
static const int variable1 = 2;
#endif
file1.h:
#ifndef FILE1_H
#define FILE1_H
#include "file2.h"
#include "variable.h"
class fileOne{
private:
fileTwo ft[variable1];
public:
//some functions...
};
#endif
file2.h:
#ifndef FILE2_H
#define FILE2_H
class fileTwo{
private:
//some variables
public:
//some functions
};
#endif
основной. cpp:
#include "file1.h"
int main(){
fileOne fo;
}