The mainonly difference between a class and a struct is that members within a struct are automatically public. Also, classes can be inherited from, see Polymorphism in c++
You could just create a class for all the input:
class Input
{
public:
static bool isMainLoopActive;
static bool isMoveRightPressed;
...
}
but a struct would also work, e.g.
struct Input
{
static bool isMainLoopActive;
static bool isMoveRightPressed;
...
}
The more important part is that they are static, since that would mean modifying them anywhere would change the values everywhere. Similar to global variables, also see Static keyword in c++.
The main difference between this and your method is that they are no longer global, but they do essentially the same thing. Instead of grabbing them normally, you would use something like Input::isMainLoopActive. This can also help code become more clean and understandable, as anyone can see its part of input, but thats just an example, you can change it to work with your scripts, and create multiple structs/classes if you need.