4

クラス定義内に静的オブジェクトを作成する必要があります。Javaでも可能ですが、C++ではエラーが発生します。

../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 

私のクラスは次のようになります。

#include <string>

class PlaceID {

public:

    inline PlaceID(const std::string placeName):mPlaceName(placeName) {}

    const static PlaceID OUTSIDE = PlaceID("");

private:
    std::string mPlaceName;
};

このクラス内にクラスのオブジェクトを作成することは可能ですか?それが保持しなければならない前提条件は何ですか?

4

1 に答える 1

12

クラスがまだ完全に定義されていないため、メンバー変数を定義できません。代わりに次のようにする必要があります。

class PlaceID {

public:

    inline PlaceID(const std::string placeName):mPlaceName(placeName) {}

    const static PlaceID OUTSIDE;

private:
    std::string mPlaceName;
};

const PlaceID PlaceID::OUTSIDE = PlaceID("");
于 2012-07-25T10:00:57.597 に答える