Search code examples
c++inheritanceglobal-variables

Initialize with global variables in c++


I've tried to read the thread below about creating global variables that can be used between multiple files but it will not work.

Global Variable within Multiple Files

variable.h

extern const int variable1;

file1.h

class fileOne{
private:
    fileTwo ft[variable1];
    
public:
    //some functions...
};

file2.h

class fileTwo{
private:
    //some variables
    
public:
    //some functions
};

main.cpp

int main(){
    int variable1 = 2;
    fileOne fo;
}

When I run this, the compiler says the following:

error: array bound is not an integer constant before ']' token

Is it possible to declare a global variable and use it in the manner above?

Also: Is this an array? fileTwo ft[variable1]; Is fileTwo a class?


Solution

  • To define an array you need to specify the actual size of the array and the size must be something the compiler can turn into a constant. Since variable1 can't be turned into a constant, the compiler issues the error.

    What you can do is something like the following.

    file1.h

    class fileOne{
    private:
        fileTwo ft[variable1];
    
    public:
        //some functions...
    };
    

    file2.h

    class fileTwo{
    private:
        //some variables
    
    public:
        //some functions
    };
    

    main.cpp

    static const  int variable1 = 2;  // const int for the size of the ft array of class fileOne
    
    #include "file2.h"  // class fileTwo definition is needed for class fileOne
    #include "file1.h"  // class fileOne has a dependency on class fileTwo
    
    int main(){
        fileOne fo;  // define a fileOne object named fo
    
        // do more stuff
    }