If you are going to be declaring methods, you should just declare a class.
In C++, the only difference between struct and class is the default visibility of members (class is private, struct is public).
But for people familiar with C, structs are used there to hold data only, and it's generally advised to follow that pattern and only use structs when it'll only hold data.
As for how to make it print out, you could make a method that returns the integer
yeah, I could just do cout << a.value but as mentioned above, I asked about a specific code, overloading << is not an option, as I want to return "value" whenever calling struct at all times, not only when accessing it with << operator