I need to create a static object inside a class definition. It is possible in Java, but in C++ I get an error:
../PlaceID.h:9:43: error: invalid use of incomplete type ‘class
PlaceID’ ../PlaceID.h:3:7: error: forward declaration of ‘class
PlaceID’ ../PlaceID.h:9:43: error: invalid in-class initialization of static data
My class looks like this:
#include <string>
class PlaceID {
public:
inline PlaceID(const std::string placeName):mPlaceName(placeName) {}
const static PlaceID OUTSIDE = PlaceID("");
private:
std::string mPlaceName;
};
Is it possible to make an object of a class inside this class? What are prerequisites that it must hold?
You can't define the member variable because the class isn't fully defined yet. You have to do like this instead:
class PlaceID {
public:
inline PlaceID(const std::string placeName):mPlaceName(placeName) {}
const static PlaceID OUTSIDE;
private:
std::string mPlaceName;
};
const PlaceID PlaceID::OUTSIDE = PlaceID("");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With