Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Define a const static object variable inside the class

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?

like image 393
Benjamin Avatar asked Dec 16 '22 21:12

Benjamin


1 Answers

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("");
like image 86
Some programmer dude Avatar answered Dec 18 '22 11:12

Some programmer dude