从自动生成的类中加入两个枚举的最佳 C++ (不是 C++11)方法是什么,类似于下面介绍的方法:
namespace A {
namespace B { ...
class CarInfo {
public:
enum State { // basically same enums defined in different classes
Running,
Stopped,
Broken
};
};
class BikeInfo {
public:
enum State { // basically same enums defined in different classes
Running,
Stopped,
Broken
};
};
}
}
所需要的是统一的枚举状态,这两个类在外部世界都可以看到以及安全的类型转换。
我想出的最好也是最直接的方法是创建外部枚举:
enum State {
Running,
Stopped,
Broken
};
连同转换函数
State stateEnumConv(A::B::CarInfo::State aState);
State stateEnumConv(A::B::BikeInfo::State aState);
A::B::CarInfo::State stateEnumConv(State aState);
A::B::BikeInfo::State stateEnumConv(State aState);
需要正确的方法。
来自 CI 的天哪,讨厌无处不在的长命名空间,我希望它只能是 A::B 级别,就像在展示的示例中一样。四个转换函数似乎是多余的,注意 CarInfo::State 和 BikeInfo::State 具有相同的枚举“成员”。