前言
枚举在C++有两种形式,enum和enum class,enum是C++11之前的写法,也就是无范围枚举,enum class是C++11引入的,既有范围的枚举。
前置声明
无范围枚举
// A.h
enum Type : unsigned int; // Forward declaration
class A {
public:
A();
~A();
Type mType;
};
// A.cpp
#include "A.h"
#include "B.h"
...
// B.h
enum Type : unsigned int
{
TEST_TYPE_A,
TEST_TYPE_B
};
class B {
public:
B();
~B();
};
有范围枚举
// A.h
enum class Type : unsigned int; // Forward declaration
class A {
public:
A();
~A();
Type mType;
};
// A.cpp
#include "A.h"
#include "B.h"
...
// B.h
enum class Type : unsigned int
{
TEST_TYPE_A,
TEST_TYPE_B
};
class B {
public:
B();
~B();
};