33

別のクラススコープ内で定義された列挙型を前方宣言することが可能かどうか疑問に思っています。たとえば、次のことを考慮してください。

//A.h
class A
{
public:
    enum class type: unsigned long { /*some stuff*/ }
};

ここで、別のヘッダーで'type'列挙型を前方宣言したいと思います(以下のクラスBにA :: typeで何かを行う関数があるとします)

//B.h
enum A::type; //use of undefined type 'A'

class B
{
public:
    UseTypeEnum(A::Type&);
};

これも機能しません:

//B.h
class A;
enum A::type; //still use of undefined type

class B...

列挙型がAhのグローバルスコープで宣言されていれば問題ありません

これを行う方法はありますか?

4

1 に答える 1

28

クラス定義の外でネストされた型を宣言することはできません。

それらをクラス外で使用する必要がある場合は、クラス定義を含めるか、名前空間に移動する必要があります。

于 2012-12-12T14:43:48.747 に答える