I have 2 questions:
Why is this possible for an int variable:
foo.h:
class foo{
private:
const static int a = 42;
};
but for a string variable I need to do it this way?
foo.h:
class foo{
private:
static string fooString;
};
foo.cpp:
string foo::fooString = "foo";
And also:
In my particular case foo::fooString should represent a path variable, and I would like that for every object of class foo there were just one instance of foo::string, representing a const value that should never change.
Is there another way to solve this problem?
Just because. Actually you can still make the
stringconstbut, yes, you have to define it outside of the class definition. You can only do in-place initialisation ofstaticmembers when they areconstand integral (or “of literal type”).(In C++11 you can even do it for non-
staticnon-constmembers when they are of literal type.)A
static const std::string, as you might expect.