I'd like to have a private static constant for a class (in this case a shape-factory).
I'd like to have something of the sort.
class A {
private:
static const string RECTANGLE = "rectangle";
}
Unfortunately I get all sorts of error from the C++ (g++) compiler, such as:
> ISO C++ forbids initialization of
> member ‘RECTANGLE’
> invalid in-class initialization of static data member of non-integral type ‘std::string’
> error: making ‘RECTANGLE’ static
This tells me that this sort of member design is not compliant with the standard. How do you have a private literal constant (or perhaps public) without having to use a #define directive (I want to avoid the uglyness of data globality!)
Any help is appreciated.
In order to have a static member within your class, you can declare the static const string inside your class, but you will need to define it outside of the class.