2

次のヘッダーファイルがあります。

namespace First
{
    namespace Second
    {
        class Limit
        {
            public:
                enum Status
                {
                    GOOD,
                    BAD
                };
        }
    }
}

所有権があるため、名前を変更し、関連情報のみを残しました。

自分のクラスでは...

First::Second::Limit::Status limit_status = First::Second::Limit::Status::OK;

しかし、エラーが発生します: エラー: クラス First::Second::Limit::Status はクラスまたは名前空間ではありません

その列挙型の変数を宣言することはできますが、値を設定することはできません。これを修正するにはどうすればよいですか?

4

2 に答える 2

4

C++11 を使用している場合は、次を使用しますenum class

namespace First
{
    namespace Second
    {
        class Limit
        {
            public:
                enum class Status
                {
                    GOOD,
                    BAD
                };
        }
    }
}

Statusこれでスコープとして使用できます。Status::そうでない場合は、その部分を含めないでください。

于 2012-04-23T16:39:47.280 に答える
4
First::Second::Limit::Status limit_status = First::Second::Limit::GOOD;

Statusビットは必要ありません。const int内部Limitでいくつかの を定義していると考えてくださいLimit::int::GOOD

于 2012-04-23T16:37:37.447 に答える